home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / 32INCLUD.PAK / IDAPI.H
C/C++ Source or Header  |  1997-05-06  |  269KB  |  5,636 lines

  1. //              idapi.h - main include file for idapi clients
  2. //
  3. // $Revision:   4.128  $
  4.  
  5.  
  6. #ifndef DBI_H
  7. #define DBI_H
  8. #ifdef __cplusplus
  9.     extern "C" {
  10. #endif // __cplusplus
  11.  
  12.  
  13. #define DBIINTFVER         300                  // Version of the interface
  14. #define DBIENGVERSION      300                  // Version of the engine (3.00)
  15.  
  16.  
  17. // assume byte packing throughout
  18. #if ! (defined(lint) || defined(_lint))
  19. #  ifndef RC_INVOKED
  20. #    if ( _MSC_VER >= 800 ) || (defined(__BORLANDC__) && defined(__FLAT__))
  21. #      pragma warning(disable:4103)
  22. #      if !(defined( MIDL_PASS )) || defined( __midl )
  23. #        pragma pack(push)
  24. #      endif
  25. #      pragma pack(1)
  26. #    elif defined(__BORLANDC__) && !defined(__FLAT__)
  27. #      pragma option -a-
  28. #    else
  29. #      pragma pack(1)
  30. #    endif
  31. #  endif // ndef RC_INVOKED
  32. #endif // ! (defined(lint) || defined(_lint))
  33.  
  34. #ifndef NODBITYPES
  35.  
  36. //-----------------------------------------------------------------------
  37. //     DBI types
  38. //-----------------------------------------------------------------------
  39.  
  40.  
  41. // sdk debug layer defines
  42. #define         DEBUGON         0x1
  43. #define         OUTPUTTOFILE    0x2
  44. #define         FLUSHEVERYOP    0x8
  45. #define         APPENDTOLOG     0x10
  46.  
  47.  
  48.  
  49.  
  50. // Constants
  51.  
  52. #define DBIMAXNAMELEN         31            // Name limit (table, field etc)
  53. #define DBIMAXSPNAMELEN       64            // Max stored procedure name length
  54. #define DBIMAXFUNCNAMELEN     255           // Max function name len
  55. #define DBIMAXFLDSINKEY       16            // Max fields in a key
  56. #define DBIMAXKEYEXPLEN      220            // Max Key expression length
  57. #define DBIMAXEXTLEN           3            // Max file extension len, not incl. dot (excluding zero termination)
  58. #if defined(__WIN32__)
  59. #define DBIMAXTBLNAMELEN     260            // Max table name length
  60. #define DBIMAXDRIVELEN       127            // Max drive length
  61. #define DBIMAXPATHLEN        260            // Max path+file name len (excluding zero termination)
  62. #else
  63. #define DBIMAXTBLNAMELEN     127            // Max table name length
  64. #define DBIMAXDRIVELEN         2            // Max drive length
  65. #define DBIMAXPATHLEN         81            // Max path+file name len (excluding zero termination)
  66. #endif // defined(WIN32)
  67.  
  68. #define DBIMAXMSGLEN         127            // Max message len
  69. #define DBIMAXVCHKLEN        255            // Max val check len
  70. #define DBIMAXPICTLEN        175            // Max picture len
  71. #define DBIMAXFLDSINSEC      256            // Max fields in security spec
  72.  
  73. #define DBIMAXSCFIELDS        32            // max nbr of fields in a config section
  74. #define DBIMAXSCFLDLEN       128            // max field length
  75. #define DBIMAXSCRECSIZE     DBIMAXSCFIELDS*DBIMAXSCFLDLEN  // max rec size
  76.  
  77. #define DBIMAXUSERNAMELEN      14           // Max user name (general)
  78. #define DBIMAXXBUSERNAMELEN    16           // Max user name length (xBASE)
  79. #define DBIMAXBOOKMARKLEN    4104           // Max Bookmark length
  80.  
  81. #define DBIMAXTRACELEN       8192           // Max trace msg len
  82.  
  83. #define DBIMAXTYPEDESC       127            // Max Type Description size
  84. #define DBIMAXDRSQLSTR       8192           // Max Size of SQL Constraint
  85.  
  86.  
  87. #if defined(__FLAT__)
  88. #ifdef far
  89. #undef far
  90. #endif // far
  91. #define far
  92. #endif // defined __FLAT__
  93.  
  94. #ifndef NODBIBASETYPES
  95.  
  96. #ifndef TRUE
  97. #  define TRUE 1
  98. #endif // TRUE
  99. #ifndef FALSE
  100. #  define FALSE 0
  101. #endif // FALSE
  102.  
  103. //For pointers
  104. #ifndef NULL
  105. #  define NULL (0)
  106. #endif // NULL
  107.  
  108. #if defined(__WIN32__) || defined (__NT__)
  109.    #if !defined(VOID)
  110.        #define VOID    void
  111.        typedef char CHAR;                     // from winnt.h
  112.        typedef short SHORT;
  113.        typedef long LONG;
  114.    #endif
  115. #else
  116.    #if !defined(VOID)
  117.       #define VOID    void
  118.    #endif // !defined(VOID)
  119.    typedef char CHAR;                     // from windows.h
  120. #endif // defined(WIN32) && !defined(VOID)
  121.  
  122. #ifndef _WINDEF_
  123. typedef unsigned char       BYTE;
  124. #endif
  125.  
  126. #ifndef INT8
  127. #  define INT8    char
  128. #endif // INT8
  129.  
  130. #ifndef UINT8
  131. #  define UINT8   unsigned char
  132. #endif // UINT8
  133.  
  134. #ifndef INT16
  135. #if defined(__FLAT__)
  136. #  define INT16   short
  137. #else
  138. #  define INT16   int
  139. #endif // defined(__FLAT__)
  140. #endif // INT16
  141.  
  142. #ifndef UINT16
  143. #if defined(__FLAT__)
  144. #  define UINT16  unsigned short
  145. #else
  146. #  define UINT16  unsigned int
  147. #endif // defined(__FLAT__)
  148. #endif // UINT16
  149.  
  150. #ifndef INT32
  151. #  define INT32   long
  152. #endif // INT32
  153. #ifndef UINT32
  154. #  define UINT32  unsigned long
  155. #endif // UINT32
  156.  
  157. #ifndef BOOL
  158. typedef int BOOL;                      // from windows.h
  159. #endif
  160.  
  161. typedef unsigned char BOOL8;
  162. typedef short         BOOL16;
  163.  
  164. #endif // NODBIBASETYPES
  165.  
  166. typedef double              DFLOAT;
  167.  
  168. typedef long      DBIDATE;
  169. typedef long      TIME;
  170. typedef double    TIMESTAMP;
  171.  
  172. typedef UINT32    hDBICfg;
  173.  
  174. typedef VOID      far *pVOID;
  175. typedef pVOID     far *ppVOID;
  176. typedef CHAR      far *pCHAR;
  177. typedef const CHAR far *pCCHAR;
  178. typedef BYTE      far *pBYTE;
  179. typedef INT8      far *pINT8;
  180. typedef UINT8     far *pUINT8;
  181. typedef INT16     far *pINT16;
  182. typedef UINT16    far *pUINT16;
  183. typedef INT32     far *pINT32;
  184. typedef UINT32    far *pUINT32;
  185. typedef DFLOAT    far *pDFLOAT;
  186. typedef DBIDATE   far *pDBIDATE;
  187. typedef TIME      far *pTIME;
  188. typedef BOOL      far *pBOOL;
  189. typedef BOOL16    far *pBOOL16;
  190. typedef TIMESTAMP far *pTIMESTAMP;
  191.  
  192. #if !defined(__WIN32__) || (defined(__WATCOMC__) && !defined (__NT__))
  193. #define FLOAT     DFLOAT            // for compatibility with BDE 2.0
  194. #define pFLOAT    pDFLOAT
  195. #define DATE      DBIDATE
  196. #define pDATE     pDBIDATE
  197. #endif // WIN32
  198.  
  199. typedef pBYTE     far *ppBYTE;
  200. typedef pCHAR     far *ppCHAR;
  201. typedef pBOOL     far *ppBOOL;
  202. typedef pBOOL16   far *ppBOOL16;
  203.  
  204. typedef hDBICfg   far *phDBICfg;
  205.  
  206.  
  207. // Constants
  208.  
  209. //===========================================================================
  210. //                            G e n e r a l
  211. //===========================================================================
  212.  
  213. #if defined(__FLAT__)
  214. #define DBIFN  __stdcall               // All functions are this type
  215. #else
  216. #define DBIFN  __pascal far            // All functions are this type
  217. #endif // define(__FLAT__)
  218. typedef UINT16          DBIResult;     // Function result
  219. typedef DBIResult  far *pDBIResult;    // Function result pointer
  220.  
  221. typedef UINT32           hDBIObj;      // Generic object handle
  222.  
  223. typedef hDBIObj          hDBIDb;       // Database handle
  224. typedef hDBIObj          hDBIQry;      // Query handle
  225. typedef hDBIObj          hDBIStmt;     // Statement handle ("new query")
  226. typedef hDBIObj          hDBICur;      // Cursor handle
  227. typedef hDBIObj          hDBISes;      // Session handle
  228. typedef hDBIObj          hDBIXlt;      // Translation handle
  229.  
  230. typedef hDBIObj    far *phDBIObj;      // pointer to generic object handle
  231. typedef hDBIDb     far *phDBIDb;       // pointer to Database  handle
  232. typedef hDBIQry    far *phDBIQry;      // pointer to Query     handle
  233. typedef hDBIStmt   far *phDBIStmt;     // pointer to Statement handle
  234. typedef hDBICur    far *phDBICur;      // pointer to Cursor    handle
  235. typedef hDBISes    far *phDBISes;      // pointer to Session   handle
  236. typedef hDBIXlt    far *phDBIXlt;      // pointer to Translation handle
  237.  
  238. typedef UINT32          hDBIXact;      // Transaction handle
  239. typedef hDBIXact   far *phDBIXact;     // pointer to Transaction handle
  240.  
  241. typedef hDBIObj         hDBIDR ;       // Handle to a Client Data Repository (CDR) Object
  242. typedef hDBIDR     far  *phDBIDR ;     // Ptr to CDR Handle
  243.  
  244. // typedefs for buffers of various common sizes:
  245. //
  246. typedef CHAR   DBIPATH    [DBIMAXPATHLEN+1];     // holds a DOS path
  247. typedef CHAR   DBINAME    [DBIMAXNAMELEN+1];     // holds a name
  248. typedef CHAR   DBIEXT     [DBIMAXEXTLEN+1];      // holds an extension EXT
  249. typedef CHAR   DBIDOTEXT  [DBIMAXEXTLEN+2];      // holds an extension EXT including '.'
  250. typedef CHAR   DBIDRIVE   [DBIMAXDRIVELEN+1];    // holds a drive name
  251. typedef CHAR   DBITBLNAME [DBIMAXTBLNAMELEN+1];  // holds a table name
  252. typedef CHAR   DBISPNAME  [DBIMAXSPNAMELEN+1];   // holds a stored procedure name
  253. typedef CHAR   DBIUSERNAME[DBIMAXUSERNAMELEN+1]; // holds a user name
  254. typedef UINT16 DBIKEY     [DBIMAXFLDSINKEY];     // holds list of fields in a key
  255. typedef CHAR   DBIKEYEXP  [DBIMAXKEYEXPLEN+1];   // holds a key expression
  256. typedef BYTE   DBIVCHK    [DBIMAXVCHKLEN+1];     // holds a validity check
  257. typedef CHAR   DBIPICT    [DBIMAXPICTLEN+1];     // holds a picture (Pdox)
  258. typedef CHAR   DBIMSG     [DBIMAXMSGLEN+1];      // holds an error message
  259. typedef CHAR   DBIDRTYPEDESC [DBIMAXTYPEDESC+1]; // holds a Type Description string
  260. typedef CHAR   DBISQLSTR   [DBIMAXDRSQLSTR+1];    // a SQL string
  261.  
  262.  
  263. //===========================================================================
  264. //                            Environmental
  265. //===========================================================================
  266.  
  267. typedef struct                            // Struct for defining the environ.
  268.    {
  269.       DBIPATH        szWorkDir;                 // Working directory
  270.       DBIPATH        szIniFile;                 // Configuration file
  271.       BOOL16         bForceLocalInit;           // Force local initialization
  272.       DBINAME        szLang;                    // System language driver
  273.       DBINAME        szClientName;              // Client name (documentary)
  274.    } DBIEnv;
  275. typedef DBIEnv far   *pDBIEnv;
  276.  
  277. //============================================================================
  278. //                   System Info
  279. //============================================================================
  280.  
  281. typedef struct                         // System Version Info
  282.    {
  283.       UINT16         iVersion;            // Engine version
  284.       UINT16         iIntfLevel;          // Client Interface level
  285.       DBIDATE        dateVer;             // Version date (Compile/Release)
  286.       TIME           timeVer;             // Version time (Compile/Release)
  287. #if defined(__WIN32__)
  288.       CHAR           szVersion[20];       // Version name (xxx.xxx.xxx.xxx)
  289. #endif
  290.    } SYSVersion;
  291. typedef SYSVersion far *pSYSVersion;
  292.  
  293. typedef struct                         // System configuration (basic)
  294.    {
  295.       BOOL16         bLocalShare;         // If Local files will be shared
  296.       UINT16         iNetProtocol;        // Net Protocol (35, 40 etc.)
  297.       BOOL16         bNetShare;           // If Net files will be shared
  298.       DBINAME        szNetType;           // Network type
  299.       DBIUSERNAME    szUserName;          // Network user name
  300.       DBIPATH        szIniFile;           // Configuration file
  301.       DBINAME        szLangDriver;        // System language driver
  302.    } SYSConfig;
  303. typedef SYSConfig far *pSYSConfig;
  304.  
  305. typedef struct                         // System Status/Info
  306.    {
  307.       UINT16         iBufferSpace;           // in K
  308.       UINT16         iHeapSpace;             // in K
  309.       UINT16         iDrivers;               // Active/Loaded drivers
  310.       UINT16         iClients;               // Active clients
  311.       UINT16         iSessions;              // Number of sessions (For all clients)
  312.       UINT16         iDatabases;             // Open databases
  313.       UINT16         iCursors;               // Number of cursors
  314.    } SYSInfo;
  315. typedef SYSInfo far * pSYSInfo;
  316.  
  317. typedef struct
  318.    {
  319.       DBINAME        szName;                 // Documentary name
  320.       UINT16         iSessions;              // Number of sessions
  321.       DBIPATH        szWorkDir;              // Working directory
  322.       DBINAME        szLang;                 // System language driver (Client supplied)
  323.    } CLIENTInfo;
  324. typedef CLIENTInfo far * pCLIENTInfo;
  325.  
  326. typedef struct
  327.    {
  328.       UINT16         iSession;               // Session id (1..n)
  329.       DBINAME        szName;                 // Documentary name
  330.       UINT16         iDatabases;             // Open databases
  331.       UINT16         iCursors;               // Open cursors
  332.       INT16          iLockWait;              // Lock wait time (in seconds)
  333.       DBIPATH        szNetDir;               // Net directory location
  334.       DBIPATH        szPrivDir;              // Current Private directory
  335.    } SESInfo;
  336. typedef SESInfo far * pSESInfo;
  337.  
  338. //============================================================================
  339. //                             Table / Field Types
  340. //============================================================================
  341.  
  342. // Driver Types
  343.  
  344. #define szPARADOX       "PARADOX"
  345. #define szDBASE         "DBASE"
  346. #define szASCII         "ASCIIDRV"
  347.  
  348.  
  349. // Field Types (Logical)
  350.  
  351. #define fldUNKNOWN      0
  352. #define fldZSTRING      1                 // Null terminated string
  353. #define fldDATE         2                 // Date     (32 bit)
  354. #define fldBLOB         3                 // Blob
  355. #define fldBOOL         4                 // Boolean  (16 bit)
  356. #define fldINT16        5                 // 16 bit signed number
  357. #define fldINT32        6                 // 32 bit signed number
  358. #define fldFLOAT        7                 // 64 bit floating point
  359. #define fldBCD          8                 // BCD
  360. #define fldBYTES        9                 // Fixed number of bytes
  361. #define fldTIME         10                // Time        (32 bit)
  362. #define fldTIMESTAMP    11                // Time-stamp  (64 bit)
  363. #define fldUINT16       12                // Unsigned 16 bit integer
  364. #define fldUINT32       13                // Unsigned 32 bit integer
  365. #define fldFLOATIEEE    14                // 80-bit IEEE float
  366. #define fldVARBYTES     15                // Length prefixed var bytes
  367. #define fldLOCKINFO     16                // Look for LOCKINFO typedef
  368.  
  369. #define MAXLOGFLDTYPES  17                // Number of logical fieldtypes
  370.  
  371. // Sub Types (Logical)
  372.  
  373. // fldFLOAT subtype
  374.  
  375. #define fldstMONEY      21                // Money
  376.  
  377. // fldBLOB subtypes
  378.  
  379. #define fldstMEMO          22             // Text Memo
  380. #define fldstBINARY        23             // Binary data
  381. #define fldstFMTMEMO       24             // Formatted Text
  382. #define fldstOLEOBJ        25             // OLE object (Paradox)
  383. #define fldstGRAPHIC       26             // Graphics object
  384. #define fldstDBSOLEOBJ     27             // dBASE OLE object
  385. #define fldstTYPEDBINARY   28             // Typed Binary data
  386.  
  387. // fldZSTRING subtype
  388.  
  389. #define fldstPASSWORD      1              // Password
  390.  
  391. // fldINT32 subtype
  392.  
  393. #define  fldstAUTOINC      29
  394.  
  395. // Paradox types (Physical)
  396.  
  397. #define  fldPDXCHAR        0x101        // Alpha    (string)
  398. #define  fldPDXNUM         0x102        // Numeric
  399. #define  fldPDXMONEY       0x103        // Money
  400. #define  fldPDXDATE        0x104        // Date
  401. #define  fldPDXSHORT       0x105        // Short
  402. #define  fldPDXMEMO        0x106        // Text Memo       (blob)
  403. #define  fldPDXBINARYBLOB  0x107        // Binary data     (blob)
  404. #define  fldPDXFMTMEMO     0x108        // Formatted text  (blob)
  405. #define  fldPDXOLEBLOB     0x109        // OLE object      (blob)
  406. #define  fldPDXGRAPHIC     0x10A        // Graphics object (blob)
  407. #define  fldPDXBLOB        fldPDXMEMO
  408. #define  fldPDXLONG        0x10B        // Long
  409. #define  fldPDXTIME        0x10C        // Time
  410. #define  fldPDXDATETIME    0x10D        // Time Stamp
  411. #define  fldPDXBOOL        0x10E        // Logical
  412. #define  fldPDXAUTOINC     0x10F        // Auto increment (long)
  413. #define  fldPDXBYTES       0x110        // Fixed number of bytes
  414. #define  fldPDXBCD         0x111        // BCD (32 digits)
  415. #define  fldPDXUNICHAR     0x112        // not supported yet
  416.  
  417. // xBASE types (Physical)
  418.  
  419. #define  fldDBCHAR         0x201        // Char string
  420. #define  fldDBNUM          0x202        // Number
  421. #define  fldDBMEMO         0x203        // Memo          (blob)
  422. #define  fldDBBOOL         0x204        // Logical
  423. #define  fldDBDATE         0x205        // Date
  424. #define  fldDBFLOAT        0x206        // Float
  425. #define  fldDBLOCK         0x207        // Logical type is LOCKINFO
  426. #define  fldDBOLEBLOB      0x208        // OLE object    (blob)
  427. #define  fldDBBINARY       0x209        // Binary data   (blob)
  428. #define  fldDBBYTES        0x20A        // Only for TEMPORARY tables
  429.  
  430. // xBASE key types (Cannot be used as field types)
  431.  
  432. #define  fldDBKEYNUM       0x210
  433. #define  fldDBKEYBCD       0x211
  434.  
  435.  
  436. // Ascii types (Physical)
  437.  
  438. #define  fldASCCHAR         0x301       // Char string
  439. #define  fldASCNUM          0x302       // Number
  440. #define  fldASCBOOL         0x303       // Logical
  441. #define  fldASCDATE         0x304       // Date
  442. #define  fldASCFLOAT        0x305       // Float
  443. #define  fldASCLOCK         0x306       // Not used
  444. #define  fldASCTIMESTAMP    0x307       // TimeStamp
  445. #define  fldASCTIME         0x308       // Time
  446. #define  fldASCLONG         0x309       // Long
  447. #define  fldASCMONEY        0x30A       // Money
  448.  
  449.  
  450. //============================================================================
  451. //                    Field descriptor
  452. //============================================================================
  453.  
  454.  
  455. typedef enum                              // Field Val Check type
  456.    {
  457.       fldvNOCHECKS     = 0,                  // Does not have explicit val checks
  458.       fldvHASCHECKS    = 1,                  // One or more val checks on the field
  459.       fldvUNKNOWN      = 2                   // Dont know at this time
  460.    } FLDVchk;
  461.  
  462. typedef enum                              // Field Rights
  463.    {
  464.       fldrREADWRITE     = 0,                 // Field can be Read/Written
  465.       fldrREADONLY      = 1,                 // Field is Read only
  466.       fldrNONE          = 2,                 // No Rights on this field
  467.       fldrUNKNOWN       = 3                  // Dont know at this time
  468.    } FLDRights;
  469.  
  470. typedef struct {                          // Field Descriptor
  471.       UINT16         iFldNum;                // Field number (1..n)
  472.       DBINAME        szName;                 // Field name
  473.       UINT16         iFldType;               // Field type
  474.       UINT16         iSubType;               // Field subtype (if applicable)
  475.       INT16          iUnits1;                // Number of Chars, digits etc
  476.       INT16          iUnits2;                // Decimal places etc.
  477.       UINT16         iOffset;                // Offset in the record (computed)
  478.       UINT16         iLen;                   // Length in bytes (computed)
  479.       UINT16         iNullOffset;            // For Null bits (computed)
  480.       FLDVchk        efldvVchk;              // Field Has vcheck (computed)
  481.       FLDRights      efldrRights;            // Field Rights (computed)
  482.       BOOL16         bCalcField;             // Is Calculated field (computed)
  483.       UINT16         iUnUsed[2];
  484.    } FLDDesc;
  485. typedef FLDDesc far *pFLDDesc;
  486.  
  487. //============================================================================
  488. //                    Index descriptor
  489. //============================================================================
  490.  
  491.  
  492. typedef struct                            // Index description
  493.    {
  494.       DBITBLNAME     szName;                 // Index name
  495.       UINT16         iIndexId;               // Index number
  496.       DBINAME        szTagName;              // Tag name (for dBASE)
  497.       DBINAME        szFormat;               // Optional format (BTREE, HASH etc)
  498.       BOOL16         bPrimary;               // True, if primary index
  499.       BOOL16         bUnique;                // True, if unique keys
  500.       BOOL16         bDescending;            // True, for descending index
  501.       BOOL16         bMaintained;            // True, if maintained index
  502.       BOOL16         bSubset;                // True, if subset index
  503.       BOOL16         bExpIdx;                // True, if expression index
  504.       UINT16         iCost;                  // Not used
  505.       UINT16         iFldsInKey;             // Fields in the key (1 for Exp)
  506.       UINT16         iKeyLen;                // Phy Key length in bytes (Key only)
  507.       BOOL16         bOutofDate;             // True, if index out of date
  508.       UINT16         iKeyExpType;            // Key type of Expression
  509.       DBIKEY         aiKeyFld;               // Array of field numbers in key
  510.       DBIKEYEXP      szKeyExp;               // Key expression
  511.       DBIKEYEXP      szKeyCond;              // Subset condition
  512.       BOOL16         bCaseInsensitive;       // True, if case insensitive index
  513.       UINT16         iBlockSize;             // Block size in bytes
  514.       UINT16         iRestrNum;              // Restructure number
  515.       BOOL16         abDescending[DBIMAXFLDSINKEY];   // TRUE
  516.       UINT16         iUnUsed[16];
  517.    } IDXDesc;
  518. typedef IDXDesc far *pIDXDesc;
  519.  
  520. //============================================================================
  521. //                    Validity check, Referential integrity descriptors
  522. //============================================================================
  523.  
  524.  
  525.  
  526. // Subtypes for Lookup
  527.  
  528. typedef enum                              // Paradox Lookup type
  529.    {
  530.       lkupNONE          = 0,                 // Has no lookup
  531.       lkupPRIVATE       = 1,                 // Just Current Field + Private
  532.       lkupALLCORRESP    = 2,                 // All Corresponding + No Help
  533.       lkupHELP          = 3,                 // Just Current Fld + Help and Fill
  534.       lkupALLCORRESPHELP= 4                  // All Corresponging + Help
  535.    } LKUPType;
  536.  
  537. #define TODAYVAL   2                       // for Min/Max/Def val flags
  538. #define NOWVAL     3                       // for Min/Max/Def val flags
  539.  
  540.    // In VCHKDesc below, if any of bHasMinVal/bHasMaxVal/bHasDefVal
  541.    // = TODAYVAL, then TODAY is assumed , = NOWVAL, then current time/today is assumed
  542.  
  543. typedef struct                            // Val Check structure
  544.    {
  545.       UINT16         iFldNum;                // Field number
  546.       BOOL16         bRequired;              // If True, value is required
  547.       BOOL16         bHasMinVal;             // If True, has min value
  548.       BOOL16         bHasMaxVal;             // If True, has max value
  549.       BOOL16         bHasDefVal;             // If True, has default value
  550.       DBIVCHK        aMinVal;                // Min Value
  551.       DBIVCHK        aMaxVal;                // Max Value
  552.       DBIVCHK        aDefVal;                // Default value
  553.       DBIPICT        szPict;                 // Picture string
  554.       LKUPType       elkupType;              // Lookup/Fill type
  555.       DBIPATH        szLkupTblName;          // Lookup Table name
  556.    } VCHKDesc;
  557. typedef VCHKDesc far *pVCHKDesc;
  558.  
  559. typedef enum                              // Ref integrity type
  560.    {
  561.       rintMASTER     = 0,                    // This table is Master
  562.       rintDEPENDENT  = 1                     // This table is Dependent
  563.    } RINTType;
  564.  
  565. typedef enum                              // Ref integrity action/qualifier
  566.    {
  567.       rintRESTRICT   = 0,                    // Prohibit operation
  568.       rintCASCADE    = 1                     // Cascade operation
  569.    } RINTQual;
  570.  
  571. typedef struct                            // Ref Integrity Desc
  572.    {
  573.       UINT16         iRintNum;               // Ref integrity number
  574.       DBINAME        szRintName;             // A name to tag this integegrity constraint
  575.       RINTType       eType;                  // Whether master/dependent
  576.       DBIPATH        szTblName;              // Other table name
  577.       RINTQual       eModOp;                 // Modify qualifier
  578.       RINTQual       eDelOp;                 // Delete qualifier
  579.       UINT16         iFldCount;              // Fields in foreign key
  580.       DBIKEY         aiThisTabFld;           // Fields in this table
  581.       DBIKEY         aiOthTabFld;            // Fields in other table
  582.    } RINTDesc;
  583. typedef RINTDesc far *pRINTDesc;
  584.  
  585.  
  586. //============================================================================
  587. //                    Security descriptor
  588. //============================================================================
  589. // Family rights
  590.  
  591. #define NOFAMRIGHTS     0x00                 // No Family rights
  592. #define FORMRIGHTS      0x01                 // Can change form
  593. #define RPTRIGHTS       0x02                 // Can change reports
  594. #define VALRIGHTS       0x04                 // Can change valchecks
  595. #define SETRIGHTS       0x08                 // Can change settings
  596. #define ALLFAMRIGHTS    (FORMRIGHTS | RPTRIGHTS | VALRIGHTS | SETRIGHTS)
  597.                                              // All family rights
  598.  
  599. typedef enum  {                           // Privileges
  600.       prvNONE        = 0,                    // No privilege
  601.       prvREADONLY    = 0x01,                 // Read only Table or Field
  602.       prvMODIFY      = 0x03,                 // Read and Modify fields (non-key)
  603.       prvINSERT      = 0x07,                 // Insert + All of above
  604.       prvINSDEL      = 0x0F,                 // Delete + All of above
  605.       prvFULL        = 0x1F,                 // Full Writes
  606.       prvUNKNOWN     = 0xFF                  // Unknown
  607.    } PRVType;
  608.  
  609.  
  610. typedef struct {                             // Security description
  611.       UINT16         iSecNum;                   // Nbr to identify desc
  612.       PRVType        eprvTable;                 // Table privileges
  613.       UINT16         iFamRights;                // Family rights
  614.       DBINAME        szPassword;                // Null terminated string
  615.       PRVType        aprvFld[DBIMAXFLDSINSEC];  // Field level privileges (prvNONE/prvREADONLY/prvFULL)
  616.    } SECDesc;
  617. typedef SECDesc far *pSECDesc;
  618.  
  619.  
  620. //======================================================================
  621. //                         Miscellaneous
  622. //======================================================================
  623.  
  624. // Index Id used to open table without a default index (i.e. no order)
  625.  
  626. #define  NODEFAULTINDEX    0xFFFF
  627.  
  628.  
  629. //============================================================================
  630. //                    Object types
  631. //============================================================================
  632.  
  633. typedef enum
  634.    {
  635.        objSYSTEM                 = 1,      // System object
  636.        objSESSION                = 2,      // Session object
  637.        objDRIVER                 = 3,      // Driver object
  638.        objDATABASE               = 4,      // Database object
  639.        objCURSOR                 = 5,      // Cursor object
  640.        objSTATEMENT              = 6,      // Statement object
  641.        objCLIENT                 = 7,      // Client object
  642.        objDBSEC                  = 8,      // DbSystem object (dBASE only)
  643.        objREPOSITORY             = 9       // Data Repository object
  644.    }  DBIOBJType;
  645.  
  646. //============================================================================
  647. //                    Cursor properties
  648. //============================================================================
  649.  
  650.  
  651. typedef enum                              // Database/Table Share type
  652.    {
  653.       dbiOPENSHARED     = 0,                 // Open shared  (Default)
  654.       dbiOPENEXCL       = 1,                 // Open exclusive
  655.    } DBIShareMode;
  656.  
  657. typedef enum                              // Database/Table Access type
  658.    {
  659.       dbiREADWRITE      = 0,                 // Read + Write   (Default)
  660.       dbiREADONLY       = 1                  // Read only
  661.    } DBIOpenMode;
  662.  
  663. typedef enum                              // Lock types (Table level)
  664.    {
  665.       dbiNOLOCK         = 0,                 // No lock   (Default)
  666.       dbiWRITELOCK      = 1,                 // Write lock
  667.       dbiREADLOCK       = 2                  // Read lock
  668.    } DBILockType;
  669.  
  670. typedef enum                              // Field translate mode
  671.    {
  672.       xltNONE        = 0,                    // No translation  (Physical Types)
  673.       xltRECORD      = 1,                    // Record level translation (not supported)
  674.       xltFIELD       = 2,                    // Field level translation (Logical types)
  675.    } XLTMode;
  676.  
  677. typedef enum                              // Update lock mode (SQL only)
  678.    {
  679.       updWHEREALL    = 0,                    // All fields in WHERE clause
  680.       updWHEREKEYCHG = 1,                    // Keyed and changed fields in WHERE clause
  681.       updWHEREKEY    = 2                     // Keyed fields in WHERE clause
  682.    } UPDLockMode;
  683.  
  684.  
  685. // Table levels
  686.  
  687. #define TBLLEVEL3    3              // Paradox level 3 and dBASE level 3+
  688. #define TBLLEVEL4    4              // Paradox level 4 and dBASE level 4
  689. #define TBLLEVEL5    5              // Paradox level 5 and dBASE/Win
  690. #define TBLLEVEL7    7              // Paradox level 7 , Win32
  691. #define FOXLEVEL25   25             // Fox Table (Ver 2.5)
  692.  
  693. typedef struct {                          // Virtual Table properties
  694.       DBITBLNAME     szName;                 // table name (no extension, if it can be derived)
  695.       UINT16         iFNameSize;             // Full file name size
  696.       DBINAME        szTableType;            // Driver type
  697.       UINT16         iFields;                // No of fields in Table
  698.       UINT16         iRecSize;               // Record size (logical record)
  699.       UINT16         iRecBufSize;            // Record size (physical record)
  700.       UINT16         iKeySize;               // Key size
  701.       UINT16         iIndexes;               // Number of indexes
  702.       UINT16         iValChecks;             // Number of val checks
  703.       UINT16         iRefIntChecks;          // Number of Ref Integrity constraints
  704.       UINT16         iBookMarkSize;          // Bookmark size
  705.       BOOL16         bBookMarkStable;        // Stable book marks
  706.       DBIOpenMode    eOpenMode;              // ReadOnly / RW
  707.       DBIShareMode   eShareMode;             // Excl / Share
  708.       BOOL16         bIndexed;               // Index is in use
  709.       INT16          iSeqNums;               // 1: Has Seqnums; 0: Has Record#
  710.                                              // <0 (-1, -2, ...): None (e.g. SQL)
  711.       BOOL16         bSoftDeletes;           // Supports soft deletes
  712.       BOOL16         bDeletedOn;             // If above, deleted recs seen
  713.       UINT16         iRefRange;              // Not used
  714.       XLTMode        exltMode;               // Translate Mode
  715.       UINT16         iRestrVersion;          // Restructure version number
  716.       BOOL16         bUniDirectional;        // Cursor is uni-directional
  717.       PRVType        eprvRights;             // Table  rights
  718.       UINT16         iFmlRights;             // Family rights
  719.       UINT16         iPasswords;             // Number of Aux passwords
  720.       UINT16         iCodePage;              // Codepage (0 if unknown)
  721.       BOOL16         bProtected;             // Table is protected by password
  722.       UINT16         iTblLevel;              // Driver dependent table level
  723.       DBINAME        szLangDriver;           // Language driver name
  724.       BOOL16         bFieldMap;              // Field map active
  725.       UINT16         iBlockSize;             // Physical file blocksize in K
  726.       BOOL16         bStrictRefInt;          // Strict referential integrity
  727.       UINT16         iFilters     ;          // Number of filters
  728.       BOOL16         bTempTable   ;          // Table is a temporary table
  729.       UINT16         iUnUsed[16];
  730.      } CURProps;
  731. typedef CURProps far *pCURProps;
  732.  
  733. //============================================================================
  734. //                   Record Properties
  735. //============================================================================
  736.  
  737.  
  738. typedef struct {                          // Record properties
  739.       UINT32         iSeqNum;                // When Seq# supported only
  740.       UINT32         iPhyRecNum;             // When Phy Rec#s supported only
  741.       UINT16         bRecChanged;            // Used by Delayed Updates Cur
  742.       BOOL16         bSeqNumChanged;         // Not used
  743.       BOOL16         bDeleteFlag;            // When soft delete supported only
  744.    } RECProps;
  745. typedef RECProps far *pRECProps;
  746.  
  747.  
  748. //============================================================================
  749. //                   General properties  DbiGetProp/DbiSetProp
  750. //============================================================================
  751.  
  752.  
  753. // Cursor properties
  754. // General
  755.  
  756. #define  curMAXPROPS         0x00050000l   //ro UINT16   , Number of defined properties
  757. #define  curTABLENAME        0x00050001l   //ro pTBLNAME , Table name
  758. #define  curTABLETYPE        0x00050002l   //ro pDBINAME , Table type
  759. #define  curTABLELEVEL       0x00050003l   //ro UINT16   , Table level 1..n
  760. #define  curFILENAME         0x00050004l   //ro pPATH    , Full filename
  761. #define  curXLTMODE          0x00050005l   //rw XLTMode  , Translate mode
  762. #define  curSEQREADON        0x00050006l   //rw BOOL     , Sequential read mode hint ON
  763. #define  curONEPASSON        0x00050007l   //rw BOOL     , One pass mode hint ON
  764. #define  curUPDATETS         0x00050008l   //ro TIMESTAMP, Update timestamp
  765. #define  curSOFTDELETEON     0x00050009l   //rw BOOL     , Softdelete ON
  766. #define  curLANGDRVNAME      0x0005000Al   //ro pCHAR    , Symbolic language drv. name
  767. #define  curCURSORNAME       0x0005000Bl   //ro pCHAR    , name of the cursor
  768. #define  maxcurPROPS      11               // keep in sync when adding cursor properties
  769.  
  770. // Paradox specific
  771. #define  curPDXMAXPROPS      0x01050000l   //ro UINT16   , Number of defined properties
  772. #define  maxcurPDXPROPS   0
  773.  
  774. // DBase specific
  775. #define  curDBMAXPROPS       0x02050000l   //ro UINT16   , Number of defined properties
  776. #define  curINEXACTON        0x02050001l   //rw BOOL     , InExact match ON
  777. #define  curSHAREMODE        0x02050002l   //rw DBIShareMode, Share mode
  778. #define  maxcurDBPROPS    2
  779.  
  780. // Text Driver specific
  781. #define  curDELIMITALLFLDS   0x03050000l   //rw BOOL , Delimit all fields.
  782. #define  curUSESCHEMAFILE    0x03050001l   //rw BOOL , read schema from a file
  783.  
  784. // SQL Driver specific
  785. #define  curUPDLOCKMODE      0x04050000l   //rw UPDLockMode ,Update lock mode
  786. #define  curNATIVEHNDL       0x04050001l   //ro pBYTE       ,Native cursor handle
  787. #define  curMAXROWS          0x04050002l   //rw INT32       ,Max # of rows to fetch from server
  788. #define  curGETEXTENDEDINFO  0x04050003l   //rw BOOL , Get RINT info etc.
  789.  
  790. // Delayed Updates Specific.
  791. #define  curDELAYUPDRECSTATE        0x05050001l  // ro DELYUPDCbDesc
  792. #define  curDELAYUPDABORTRESTORE    0x05050002l  // rw BOOL, restore state
  793.                                                  // when commit is aborted.
  794. #define  curDELAYUPDDISPLAYOPT      0x05050003l  // rw UINT16, view records
  795.                                                  // with specific update stat
  796. #define  curDELAYUPDGETOLDRECORD    0x05050004l  // rw BOOL, get un-modified
  797.                                                  // rec buf for modified recs
  798. #define  curDELAYUPDNUMUPDATES      0x05050005l  // ro INT32, num of updates
  799. #define  curDELAYUPDUSECALLBACK     0x05050006l  // rw BOOL, callback usr.
  800.  
  801. // Driver properties
  802. // General
  803. #define  drvMAXPROPS         0x00030000l   //ro UINT16   , Number of defined properties
  804. #define  drvDRIVERTYPE       0x00030002l   //ro pDBINAME , Driver type
  805. #define  drvDRIVERVERSION    0x00030003l   //ro UINT16   , Driver version
  806. #define  maxdrvPROPS      2                // keep in sync when adding driver properties
  807.  
  808. // Database properties
  809. // General
  810. #define  dbMAXPROPS         0x00040000l   //ro UINT16   , Number of defined properties
  811. #define  dbDATABASENAME     0x00040001l   //ro pDBINAME , Database name/alias
  812. #define  dbDATABASETYPE     0x00040002l   //ro pDBINAME , Database type
  813. #define  dbDEFAULTDRIVER    0x00040003l   //rw pDBINAME , Default Driver name
  814. #define  dbPARAMFMTQMARK    0x00040004l   //rw BOOL     , Stmt param marker fmt = ?
  815. #define  dbUSESCHEMAFILE    0x00040005l   //rw BOOL , for text driver only.
  816. #define  maxdbPROPS       16              // keep in sync when adding ANY db properties
  817.  
  818. // SQL Driver specific
  819. #define  dbASYNCSUPPORT     0x04040000l   //ro BOOL     , Async. qry exec support
  820. #define  dbPROCEDURES       0x04040001l   //ro BOOL     , Stored procedure support
  821. #define  dbDEFAULTTXNISO    0x04040002l   //ro eXILType , Default transaction iso level
  822. #define  dbNATIVEHNDL       0x04040003l   //ro pBYTE    , Native connection handle
  823. #define  dbNATIVEPASSTHRUHNDL 0x04040004l //ro pBYTE    , Native passthru connection handle
  824. #define  dbSERVERVERSION    0x04040005l   //ro UINT16   , Major server version number
  825. #define  dbBATCHCOUNT       0x04040006l   //rw UINT16   , Batch modification count before auto-commit
  826. #define  dbTRACEMODE        0x04040007l   //rw UINT16   , Trace mode
  827. #define  dbCURRENTUSERNAME  0x04040008l   //ro UINT16   , Current User Name
  828. #define  dbOWNERQUALIFIED   0x04040009l   //ro BOOL     , For SQL Link Drivers - does this driver support
  829. #define  dbQUOTECHAR        0x0404000Al   //ro CHAR     , Quote character for quoting Object Names
  830.  
  831. // Session properties
  832. // General
  833. #define  sesMAXPROPS         0x00020000l   //ro UINT16   , Number of defined properties
  834. #define  sesSESSIONNAME      0x00020001l   //ro pDBINAME , Name of seesion
  835. #define  sesNETFILE          0x00020002l   //rw pCHAR    , Full filename of netfile (MAXPATHLEN)
  836. #define  sesCFGMODE          0x00020003l   //rw CFGMode, Mode of configuration file.
  837. #define  sesDEFAULTDRIVER    0x00020004l   //rw pDBINAME, default driver name
  838. #define  sesGROUPNAME        0x00020005l   //rw pCHAR, Security - user group name (dBASE)
  839. #define  sesUSERNAME         0x00020006l   //rw pCHAR, User Name
  840. #define  sesUSERPASSWORD     0x00020007l   //rw pCHAR, User password
  841. #define  sesSECFILENAME      0x00020008l   //rw pCHAR, Location of dBASE Security file
  842. #define  sesDRNAME           0x00020009l   //rw pCHAR, Repository Database Name
  843. #define  maxsesPROPS      9                // keep in sync when adding session properties
  844.  
  845. // System properties
  846. // General
  847. #define   sysMAXPROPS        0x00010000l   // ro UINT16  , Number of defined properties
  848. #define   sysLOWMEMUSAGE     0x00010001l   // ro UINT16  , Low memory usage in (k)
  849. #define   maxsysPROPS     1                // keep in sync when adding system properties
  850.  
  851. // Statement properties
  852. // General
  853. #define  stmtMAXPROPS        0x00060001l   //ro UINT16      Number of defined properties
  854. #define  stmtPARAMETERCOUNT  0x00060002l   //ro UINT16      Count of parameters
  855. #define  stmtPARAMETERDESCS  0x00060003l   //ro aFLDDesc    Array of parameters
  856. #define  stmtLANGDRVNAME     0x00060004l   //ro pCHAR       Symbolic language drv. name
  857. #define  stmtUNIDIRECTIONAL  0x00060010l   //rw BOOL        Cursor Unidirectional
  858. #define  stmtCURSORNAME      0x00060011l   //rw pCHAR       Cursor name
  859. #define  stmtNEWCONNECT      0x00060012l   //rw BOOL        Stmt on new connection
  860. #define  stmtNATIVEHNDL      0x00060013l   //ro pBYTE       Native statement handle
  861. #define  stmtROWCOUNT        0x00060014l   //ro UINT32      Rows effected by a stmt
  862. #define  maxstmtPROPS     31               // keep in sync when adding ANY stmt properties
  863.  
  864. // specific to QBE or local SQL
  865. #define  stmtANSTYPE         0x00060020l   //rw pBYTE       Table Type of Answer set
  866. #define  stmtLIVENESS        0x00060021l   //rw LIVENESS    Preference for canned/live answers
  867. #define  stmtQRYMODE         0x00060022l   //rw QryEvalMode Execute on server or local or either
  868. #define  stmtBLANKS          0x00060023l   //rw BOOL        True if blanks to be regarded as zeros.
  869. #define  stmtDATEFORMAT      0x00060024l   //rw FMTDate     Date format
  870. #define  stmtNUMBERFORMAT    0x00060025l   //rw FMTNumber   Number format
  871. #define  stmtAUXTBLS         0x00060026l   //rw BOOL        True if QBE to create CHANGED, etc.
  872. #define  stmtTBLVECTOR       0x00060027l   //ro UINT16      Vector of tables generated by query.
  873. #define  stmtALLPROPS        0x00060028l   //rw QueryLowProps
  874. #define  stmtALLPROPSSIZE    0x00060029l   //rw INT16       size of QueryLowProps
  875. #define  stmtANSNAME         0x00060030l   //rw pBYTE       Answer Table Name.
  876. #define  stmtCONSTRAINED     0x00060031l   //rw BOOL        Constrain input
  877. #define  stmtFIELDDESCS      0x00060032l   //rw pFLDDESC    Answer FieldDescs
  878. #define  stmtCURPROPS        0x00060033l   //rw pCURProps    Answer Curprops
  879. #define  stmtDEFDBNAME       0x00060034l   //rw pCURProps    Answer Curprops
  880. #define  stmtXLTMODE         0x00060035l   //rw XLTMode      Xltmode
  881. #define  stmtINSTBLNAME      0x00060036l   //ro DBITBLNAME  INSERT table's name
  882. #define  stmtINSERRTBLNAME   0x00060037l   //ro DBITBLNAME  ERRINS table's name
  883. #define  stmtUPDTBLNAME      0x00060038l   //ro DBITBLNAME  UPDATE table's name
  884. #define  stmtUPDERRTBLNAME   0x00060039l   //ro DBITBLNAME  ERRUPD table's name
  885. #define  stmtDELTBLNAME      0x00060040l   //ro DBITBLNAME  DELETED table's name
  886. #define  stmtDELERRTBLNAME   0x00060041l   //ro DBITBLNAME  ERRDEL table's name
  887. #define  stmtCANNEDREADONLY   0x00060042l  //ro BOOL canned answers are readonly
  888.  
  889.  
  890. //============================================================================
  891. //                    Transactions
  892. //============================================================================
  893.  
  894. // Transaction support
  895.  
  896. typedef enum                           // Transaction isolation levels
  897.    {
  898.       xilDIRTYREAD,                    // Uncommitted changes read
  899.       xilREADCOMMITTED,                // Committed changes, no phantoms
  900.       xilREPEATABLEREAD                // Full read repeatability
  901.    } eXILType;
  902.  
  903. typedef enum                           // Transaction end control
  904.    {
  905.       xendCOMMIT,       // Commit transaction
  906.       xendCOMMITKEEP,   // Commit transaction, keep cursors
  907.       xendABORT         // Rollback transaction
  908.    } eXEnd;
  909.  
  910. typedef enum                           // Transaction end control
  911.    {
  912.       xsINACTIVE,       // Transaction inactive
  913.       xsACTIVE          // Transaction active
  914.    } eXState;
  915.  
  916. typedef struct
  917.    {
  918.       eXState        exState;          // xsActive, xsInactive
  919.       eXILType       eXIL;             // Xact isolation level
  920.       UINT16         uNests;           // Xact children
  921.    } XInfo, *pXInfo;
  922.  
  923.  
  924. //============================================================================
  925. //                         BookMark compares
  926. //============================================================================
  927.  
  928. typedef enum                              // Compare BookMark Results
  929.    {
  930.       CMPLess           = -1,             // Bkm1 < Bkm2
  931.       CMPEql            = 0,              // BookMarks are exactly the same
  932.       CMPGtr            = 1,              // Bkm1 > Bkm2
  933.       CMPKeyEql         = 2               // Only Bkm1.key_val = Bkm2.key_val
  934.    } CMPBkMkRslt;
  935. typedef CMPBkMkRslt far *pCMPBkMkRslt;
  936.  
  937.  
  938. //===========================================================================
  939. //                            Key searches
  940. //===========================================================================
  941.  
  942. typedef enum  {                           // Search condition for keys
  943.       keySEARCHEQ       = 0,                 // =
  944.       keySEARCHGT       = 1,                 // >
  945.       keySEARCHGEQ      = 2,                 // >=
  946.     } DBISearchCond;
  947.  
  948.  
  949. //============================================================================
  950. //                      Create/Restructure descriptor
  951. //============================================================================
  952.  
  953. typedef enum                              // Create/Restruct Operation type
  954.    {
  955.       crNOOP         = 0,
  956.       crADD          = 1,                    // Add a new element.
  957.       crCOPY         = 2,                    // Copy an existing element.
  958.       crMODIFY       = 3,                    // Modify an element.
  959.       crDROP         = 4,                    // Removes an element.
  960.       crREDO         = 5,                    // Reconstruct an element.
  961.       crTABLE        = 6,                    // Not used
  962.       crGROUP        = 7,                    // Not used
  963.       crFAMILY       = 8,                    // Not used
  964.       crDONE         = 9,                    // Used internally
  965.       crDROPADD      = 10                    // Used internally
  966.    } CROpType;
  967.  
  968. typedef CROpType far *pCROpType;
  969.  
  970. typedef struct                            // Create/Restruct Table descr
  971.    {
  972.       DBITBLNAME     szTblName;                 // TableName incl. optional path & ext
  973.       DBINAME        szTblType;                 // Driver type (optional)
  974.       DBIPATH        szErrTblName;              // Error Table name (optional)
  975.       DBINAME        szUserName;                // User name (if applicable)
  976.       DBINAME        szPassword;                // Password (optional)
  977.       BOOL16         bProtected;                // Master password supplied in szPassword
  978.       BOOL16         bPack;                     // Pack table (restructure only)
  979.  
  980.       UINT16         iFldCount;                 // Number of field defs supplied
  981.       pCROpType      pecrFldOp;                 // Array of field ops
  982.       pFLDDesc       pfldDesc;                  // Array of field descriptors
  983.  
  984.       UINT16         iIdxCount;                 // Number of index defs supplied
  985.       pCROpType      pecrIdxOp;                 // Array of index ops
  986.       pIDXDesc       pidxDesc;                  // Array of index descriptors
  987.  
  988.       UINT16         iSecRecCount;              // Number of security defs supplied
  989.       pCROpType      pecrSecOp;                 // Array of security ops
  990.       pSECDesc       psecDesc;                  // Array of security descriptors
  991.  
  992.       UINT16         iValChkCount;              // Number of val checks
  993.       pCROpType      pecrValChkOp;              // Array of val check ops
  994.       pVCHKDesc      pvchkDesc;                 // Array of val check descs
  995.  
  996.       UINT16         iRintCount;                // Number of ref int specs
  997.       pCROpType      pecrRintOp;                // Array of ref int ops
  998.       pRINTDesc      printDesc;                 // Array of ref int specs
  999.  
  1000.       UINT16         iOptParams;                // Number of optional parameters
  1001.       pFLDDesc       pfldOptParams;             // Array of field descriptors
  1002.       pBYTE          pOptData;                  // Optional parameters
  1003.  
  1004.    } CRTblDesc;
  1005.  
  1006. typedef CRTblDesc far *pCRTblDesc;
  1007.  
  1008.  
  1009. //============================================================================
  1010. //                      Batch
  1011. //============================================================================
  1012.  
  1013.  
  1014. typedef struct                            // Batch Table definition struct
  1015.    {
  1016.       hDBIDb         hDb;                       // Database
  1017.       DBIPATH        szTblName;                 // Table name
  1018.       DBINAME        szTblType;                 // Optional Driver type
  1019.       DBINAME        szUserName;                // Optional User name
  1020.       DBINAME        szPassword;                // Optional Pass word
  1021.    } BATTblDesc;
  1022.  
  1023. typedef BATTblDesc far *pBATTblDesc;
  1024.  
  1025. typedef enum                   // Batch mode for DBIBatchMove
  1026.    {
  1027.       batAPPEND =       0,
  1028.       batUPDATE =       1,
  1029.       batAPPENDUPDATE = 2,
  1030.       batSUBTRACT =     3,
  1031.       batCOPY     =     4
  1032.    } eBATMode;
  1033.  
  1034. typedef enum                              // Sort Order
  1035.    {
  1036.       sortASCEND     = 0,                    // ascending (default)
  1037.       sortDESCEND    = 1,                    // descending
  1038.    } SORTOrder;
  1039.  
  1040. typedef SORTOrder far *pSORTOrder;
  1041.  
  1042. typedef INT16 (DBIFN  * pfSORTCompFn)     // pntr to client compare fn
  1043.    (
  1044.       pVOID          pLdObj,                 // Language driver, if needed
  1045.       pVOID          pValue1,                // first value
  1046.       pVOID          pValue2,                // second value
  1047.       UINT16         iLen                    // Length, if needed
  1048.    );
  1049.    // Returns: -1 if (Value 1 < Value 2),
  1050.    //           0 if (Value 1 == Value 2),
  1051.    //          +1 if (Value 1 > Value 2)
  1052.  
  1053.  
  1054. //===========================================================================
  1055. //                      Types/Structs for Capabilities
  1056. //===========================================================================
  1057.  
  1058. typedef enum                           // Driver Category
  1059.    {
  1060.       drvFILE           = 1,              // File based (Paradox, xBASE)
  1061.       drvOTHERSERVER    = 2,              // Other kind of server (IMS ?)
  1062.       drvSQLBASEDSERVER = 3               // SQL Based Server
  1063.    } DRVCat;
  1064.  
  1065. typedef enum                           // Config info & Optional Parameters
  1066.    {
  1067.       opDBCREATE        = 3,
  1068.       opDBOPEN          = 4,
  1069.       opTBLCREATE       = 5,
  1070.       opTBLOPEN         = 6
  1071.    } OPType;
  1072.  
  1073. typedef struct                         // Driver Description/Capabilities
  1074.    {
  1075.       DBINAME        szType;                 // Symbolic name to identify
  1076.       DBINAME        szText;                 // Descriptive text
  1077.       DRVCat         edrvCat;                // Driver category
  1078.       BOOL16         bTrueDb;                // Supports True Db concept
  1079.       DBINAME        szDbType;               // Db Type to be used
  1080.       BOOL16         bMultiUser;             // Supports Multi-user access
  1081.       BOOL16         bReadWrite;             // Read Write or Read-only
  1082.       BOOL16         bTrans;                 // Supports Transactions
  1083.       BOOL16         bPassThruSQL;           // Supports Pass-thru SQL
  1084.       BOOL16         bLogIn;                 // Requires explicit login
  1085.       BOOL16         bCreateDb;              // Can reate a Database
  1086.       BOOL16         bDeleteDb;              // Can drop database
  1087.       BOOL16         bCreateTable;           // Can create a Table
  1088.       BOOL16         bDeleteTable;           // Can delete a Table
  1089.       BOOL16         bMultiplePWs;           // Multiple passwords
  1090.       UINT16         iDriverVersion;         // Driver version 1..n
  1091.       BOOL16         bSQLRowid;              // Supports SQL rowid
  1092.       UINT16         iUnUsed[15];
  1093.    } DRVType;
  1094. typedef DRVType far *pDRVType;
  1095.  
  1096.  
  1097. typedef struct                            // Table Capabilities
  1098.    {
  1099.       UINT16         iId;                    // Id of Table Type
  1100.       DBINAME        szName;                 // Symbolic name; eg "dBASE"
  1101.       DBINAME        szText;                 // Descriptive text
  1102.       DBINAME        szFormat;               // Format; eg "HEAP"
  1103.       BOOL16         bReadWrite;             // User can Read/Write
  1104.       BOOL16         bCreate;                // Can create new tables
  1105.       BOOL16         bRestructure;           // Can restructure this table
  1106.       BOOL16         bValChecks;             // Val Checks can be specified
  1107.       BOOL16         bSecurity;              // Can be protected
  1108.       BOOL16         bRefIntegrity;          // Can participate in ref integrity
  1109.       BOOL16         bPrimaryKey;            // Supports primary key concept
  1110.       BOOL16         bIndexing;              // Can have other indexes
  1111.       UINT16         iFldTypes;              // Number of Phy Field types supported
  1112.       UINT16         iMaxRecSize;            // Max record size
  1113.       UINT16         iMaxFldsInTable;        // Max fields in a table
  1114.       UINT16         iMaxFldNameLen;         // Maximum field name length
  1115.       UINT16         iTblLevel;              // Driver dependent table level (version)
  1116.       UINT16         iUnUsed[16];
  1117.     } TBLType;
  1118. typedef TBLType far *pTBLType;
  1119.  
  1120.  
  1121. typedef struct
  1122.    {
  1123.       UINT16         iId;                    // Id of Index Type
  1124.       DBINAME        szName;                 // Symbolic name
  1125.       DBINAME        szText;                 // Descriptive text
  1126.       DBINAME        szFormat;               // Optional format(BTREE, HASH etc)
  1127.       BOOL16         bComposite;             // Supports composite keys
  1128.       BOOL16         bPrimary;               // True, if primary index
  1129.       BOOL16         bUnique;                // True, No duplicates supported
  1130.       BOOL16         bKeyDescending;         // If whole key can be descending
  1131.       BOOL16         bFldDescending;         // Field level descending
  1132.       BOOL16         bMaintained;            // Supports maintained option
  1133.       BOOL16         bSubset;                // Supports Subset expression
  1134.       BOOL16         bKeyExpr;               // If Key can be expres
  1135.       BOOL16         bCaseInsensitive;       // Supports Caseinsensitive indexes
  1136.       UINT16         iUnUsed[16];
  1137.    } IDXType;
  1138. typedef IDXType far *pIDXType;
  1139.  
  1140. typedef struct
  1141.    {
  1142.       UINT16         iId;                    // Id of Field Type
  1143.       DBINAME        szName;                 // Symbolic name; eg "ALPHA"
  1144.       DBINAME        szText;                 // Descriptive text
  1145.       UINT16         iPhyType;               // Physical/Native type
  1146.       UINT16         iXltType;               // Default xlated type
  1147.       UINT16         iXltSubType;            // Default xlated sub type
  1148.       UINT16         iMaxUnits1;             // Max units allowed (1)
  1149.       UINT16         iMaxUnits2;             // Max units allowed (2)
  1150.       UINT16         iPhySize;               // Physical size in bytes (per unit)
  1151.       BOOL16         bRequired;              // Supports 'required' option
  1152.       BOOL16         bDefaultVal;            // Supports user specified 'default'
  1153.       BOOL16         bMinVal;                // Supports MIN Val constraint
  1154.       BOOL16         bMaxVal;                // Supports MAX Val constraint
  1155.       BOOL16         bRefIntegrity;          // Can participate in ref integrity
  1156.       BOOL16         bOtherChecks;           // Supports other kinds of checks
  1157.       BOOL16         bKeyed;                 // The field type can be keyed
  1158.       BOOL16         bMultiplePerTable;      // Table can have more than 1 of this type
  1159.       UINT16         iMinUnits1;             // Min units required (1)
  1160.       UINT16         iMinUnits2;             // Min units required (2)
  1161.       BOOL16         bCreateable;            // Type can be created
  1162.       DBINAME        szNativeName;           // Native (SQL) name used in DDL
  1163.       UINT16         iUnUsed[16];
  1164.     } FLDType;
  1165. typedef FLDType far *pFLDType;
  1166.  
  1167.  
  1168. typedef enum                           // PROP Validity
  1169.    {
  1170.       epropINVALID     = 0,            // Property is INVALID (not supported)
  1171.       epropCANGET      = 1,            // You can GET value of the property
  1172.       epropCANSET      = 2             // You can GET and SET value of the property
  1173.    } PROPValid;
  1174.  
  1175.  
  1176. //===========================================================================
  1177. //                               Call Backs
  1178. //===========================================================================
  1179.  
  1180.  
  1181. typedef enum                              // Call back type
  1182.    {
  1183.        cbGENERAL      = 0,                    // General purpose
  1184.        cbRESERVED1    = 1,                    //
  1185.        cbRESERVED2    = 2,                    //
  1186.        cbINPUTREQ     = 3,                    // Input requested
  1187.        cbRESERVED4    = 4,                    //
  1188.        cbRESERVED5    = 5,                    //
  1189.        cbBATCHRESULT  = 6,                    // Batch processing rslts
  1190.        cbRESERVED7    = 7,                    //
  1191.        cbRESTRUCTURE  = 8,                    // Restructure
  1192.        cbRESERVED9    = 9,                    //
  1193.        cbRESERVED10   = 10,                   //
  1194.        cbRESERVED11   = 11,                   //
  1195.        cbRESERVED12   = 12,                   //
  1196.        cbRESERVED13   = 13,                   //
  1197.        cbRESERVED14   = 14,                   //
  1198.        cbRESERVED15   = 15,                   //
  1199.        cbRESERVED16   = 16,                   //
  1200.        cbRESERVED17   = 17,                   //
  1201.        cbTABLECHANGED = 18,                   // Table changed notification
  1202.        cbRESERVED19   = 19,                   //
  1203.        cbCANCELQRY    = 20,                   // Allow user to cancel Query
  1204.        cbRESERVED21   = 21,                   //
  1205.        cbRESERVED22   = 22,                   //
  1206.        cbGENPROGRESS  = 23,                   // Generic Progress report.
  1207.        cbDBASELOGIN   = 24,                   // dBASE Login
  1208.        cbDELAYEDUPD   = 25,
  1209.        cbFIELDRECALC  = 26,                   // Field(s) recalculation
  1210.        cbTRACE        = 27,                   // Trace
  1211.        cbDBLOGIN      = 28,                   // Database login
  1212.        cbRESERVED29   = 29,                   //
  1213.        cbRESERVED30   = 30,                   //
  1214.        cbRESERVED31   = 31,                   //
  1215.        cbRESERVED32   = 32,                   //
  1216.        cbRESERVED33   = 33,                   //
  1217.        cbNBROFCBS     = 34                    // Number of cbs
  1218.    } CBType;
  1219. typedef CBType far *pCBType;
  1220.  
  1221. typedef enum                              // Call-back return type
  1222.    {
  1223.       cbrUSEDEF        = 0,                  // Take default action
  1224.       cbrCONTINUE      = 1,                  // Continue
  1225.       cbrABORT         = 2,                  // Abort the operation
  1226.       cbrCHKINPUT      = 3,                  // Input given
  1227.       cbrYES           = 4,                  // Take requested action
  1228.       cbrNO            = 5,                  // Do not take requested action
  1229.       cbrPARTIALASSIST = 6,                  // Assist in completing the job
  1230.       cbrSKIP          = 7,                  // Skip this operation
  1231.       cbrRETRY         = 8                   // Retry this operation
  1232.    } CBRType;
  1233. typedef CBRType far *pCBRType;
  1234.  
  1235. typedef CBRType (DBIFN  * pfDBICallBack)  // Call-back funtion pntr type
  1236.    (
  1237.       CBType         ecbType,                // Callback type
  1238.       UINT32         iClientData,            // Client callback data
  1239.       pVOID          pCbInfo                 // Call back info/Client Input
  1240.    );
  1241.  
  1242. typedef pfDBICallBack far *ppfDBICallBack;
  1243.  
  1244. // Progress callback structure
  1245. typedef struct
  1246.    {
  1247.       INT16         iPercentDone;          // Percentage done
  1248.       DBIMSG        szMsg;                 // Message to display
  1249.    } CBPROGRESSDesc;
  1250.  
  1251. typedef  CBPROGRESSDesc far * pCBPROGRESSDesc;
  1252.  
  1253. typedef enum   // type of delayed update object (delayed updates callback)
  1254.    {
  1255.       delayupdNONE        = 0,
  1256.       delayupdMODIFY      = 1,
  1257.       delayupdINSERT      = 2,
  1258.       delayupdDELETE      = 3
  1259.    } DelayUpdErrOpType;
  1260.  
  1261. typedef struct       // delayed updates callback info
  1262.    {
  1263.       DBIResult           iErrCode;
  1264.       DelayUpdErrOpType   eDelayUpdOpType;
  1265.       UINT16              iRecBufSize;  // Record size (physical record)
  1266.       pBYTE               pNewRecBuf;
  1267.       pBYTE               pOldRecBuf;
  1268.    } DELAYUPDCbDesc;
  1269.  
  1270. typedef enum        // type of restructure object (restructure callback)
  1271.    {
  1272.       restrNONE        = 0,
  1273.       restrNEWFLD      = 1,
  1274.       restrOLDFLD      = 2,
  1275.       restrNEWINDEX    = 3,
  1276.       restrOLDINDEX    = 4,
  1277.       restrNEWVCHK     = 5,
  1278.       restrOLDVCHK     = 6,
  1279.       restrNEWRINT     = 7,
  1280.       restrOLDRINT     = 8,
  1281.       restrNEWSEC      = 9,
  1282.       restrOLDSEC      = 10,
  1283.       restrNEWTABLE    = 11
  1284.    } RESTErrObjType;
  1285.  
  1286. typedef struct  {               //  Database login
  1287.    DBINAME        szDbName;             // Database name
  1288.    DBIOpenMode    eOpenMode;            // Open type desired
  1289.    DBIShareMode   eShareMode;           // Share type desired
  1290.    DBINAME        szPassword;           // Password
  1291.    BOOL           bCallbackToClose;     // Returned flag
  1292.    hDBIDb         hDb;                  // db handle
  1293. } CBDBLogin;
  1294. typedef CBDBLogin *pCBDBLogin;
  1295.  
  1296. typedef enum         // trace categories
  1297.    {
  1298.       traceUNKNOWN   = 0x0000,
  1299.       traceQPREPARE  = 0x0001,   // prepared query statements
  1300.       traceQEXECUTE  = 0x0002,   // executed query statements
  1301.       traceERROR     = 0x0004,   // vendor errors
  1302.       traceSTMT      = 0x0008,   // statement ops (i.e. allocate, free)
  1303.       traceCONNECT   = 0x0010,   // connect / disconnect
  1304.       traceTRANSACT  = 0x0020,   // transaction
  1305.       traceBLOB      = 0x0040,   // blob i/o
  1306.       traceMISC      = 0x0080,   // misc.
  1307.       traceVENDOR    = 0x0100,   // vendor calls
  1308.    } TRACECat;
  1309. typedef TRACECat *pTRACECat;
  1310.  
  1311. typedef struct       // trace callback info
  1312.    {
  1313.       TRACECat    eTraceCat;
  1314.       UINT16      uTotalMsgLen;
  1315.       CHAR        pszTrace[];
  1316.    } TRACEDesc;
  1317. typedef TRACEDesc *pTRACEDesc;
  1318.  
  1319. #if !defined(MIDL)
  1320. typedef struct       // restructure callback info
  1321.    {
  1322.       DBIResult      iErrCode;
  1323.       UINT16         iTblNum;
  1324.       UINT16         iObjNum;
  1325.       // for old objects iObjNum is the sequence or field number,
  1326.       // for new objects it is the order in CRTblDesc
  1327.       RESTErrObjType   eRestrObjType;
  1328.       union
  1329.          {
  1330.             FLDDesc     fldDesc;
  1331.             IDXDesc     idxDesc;
  1332.             VCHKDesc    vchkDesc;
  1333.             RINTDesc    rintDesc;
  1334.             SECDesc     secDesc;
  1335.          } uObjDesc;
  1336.    } RESTCbDesc;
  1337.  
  1338. #endif // !defined(MIDL)
  1339.  
  1340. typedef struct
  1341. {
  1342.       DBINAME        szKeyWord;       // Keyword to display
  1343.       DBIMSG         szHelp;          // Help String
  1344. } CBEntry;
  1345.  
  1346. #define  MAXCBENTRIES    4
  1347.  
  1348. typedef enum
  1349. {
  1350.     cbiMDXMISSING = 1,                  // MDX file missing request
  1351.     cbiPDXLOOKUP  = 2,                  // Lookup table missing
  1352.     cbiPDXBLOB    = 3,                  // Blob file missing
  1353.     cbiDBTMISSING = 4,                   // DBT file missing request
  1354.     cbiDRINPUT    = 5                   // DR Manager needs user input
  1355. }   CBInputId;                          // id's for input requests
  1356.  
  1357. typedef struct
  1358. {
  1359.    CBInputId      eCbInputId;             // Id for this input request
  1360.    INT16          iCount;                 // Number of entries
  1361.    INT16          iSelection;             // Selection 1..n  (In/Out)
  1362.    BOOL16         bSave;                  // Save this option  (In/Out)
  1363.    DBIMSG         szMsg;                  // Message to display
  1364.    CBEntry        acbEntry[MAXCBENTRIES]; // Entries
  1365. } CBInputDesc;
  1366.  
  1367. typedef struct    // dBASE login callback structure
  1368. {
  1369.    DBINAME  szUserName;            // Login name of user
  1370.    DBINAME  szGroupName;           // Group to log in to
  1371.    DBINAME  szUserPassword;        // User password
  1372. } CBLoginDesc;
  1373.  
  1374. typedef  CBLoginDesc far * pCBLoginDesc;
  1375.  
  1376.  
  1377. //============================================================================
  1378. //                         Basic Query Types
  1379. //============================================================================
  1380.  
  1381. typedef enum DBIQryLang
  1382. {
  1383.    qrylangUNKNOWN = 0,  // UNKNOWN (Error)
  1384.    qrylangQBE = 1,      // QBE
  1385.    qrylangSQL = 2       // SQL
  1386. } DBIQryLang;
  1387.  
  1388. //============================================================================
  1389. //                         Statement parameter information
  1390. //============================================================================
  1391.  
  1392. typedef enum
  1393. {
  1394.    indTRUNC = -2,         // Value has been truncated
  1395.    indNULL  = -1,         // Value is NULL
  1396.    indVALUE = 1,          //
  1397. } eINDValues;
  1398.  
  1399. #define INDLEN             sizeof (INT16)
  1400.  
  1401. typedef enum STMTParamType
  1402. {
  1403.    paramUNKNOWN    = 0, // UNKNOWN (Error)
  1404.    paramIN         = 1, // Input parameter
  1405.    paramOUT        = 2, // Output parameter
  1406.    paramINOUT      = 3, // Input/Output parameter
  1407.    paramRET        = 4  // Procedure (or function) return
  1408. } STMTParamType;
  1409.  
  1410. typedef enum STMTParamFormat
  1411. {
  1412.    paramfmtUNKNOWN = 0, // UNKNOWN (Error)
  1413.    paramfmtNUMBER  = 1, // Numbered parameter markers of the form ? or :n
  1414.    paramfmtNAME    = 2  // Named parameters markers of the form :name
  1415. } STMTParamFormat;
  1416.  
  1417.  
  1418. //============================================================================
  1419. //                         Properties For DbiQPrepareExt
  1420. //============================================================================
  1421.  
  1422. #define qprepNONE       0     // like DbiQPrepare
  1423. #define qprepFORUPDATE  0x1   // do extra work, anticipating UPDATE WHERE CURRENT
  1424.  
  1425.  
  1426. //============================================================================
  1427. //                      Date, Time, Number Formats
  1428. //============================================================================
  1429.  
  1430.  
  1431. typedef struct                         // Date Format
  1432.    {
  1433.       CHAR        cDecimalSeparator;         // Default "."
  1434.       CHAR        cThousandSeparator;        // Default ","
  1435.       INT8        iDecimalDigits;            // Default 2
  1436.       INT8        bLeadingZero;              // Default TRUE.
  1437.    } FMTNumber;
  1438. typedef FMTNumber far *pFMTNumber;
  1439.  
  1440. typedef struct
  1441.    {
  1442.       CHAR        szDateSeparator[4];        // Default "/"
  1443.       INT8        iDateMode;                 // 0 = MDY (Def), 1 = DMY, 2 = YMD
  1444.       INT8        bFourDigitYear;            // Write Year as 4 digits (FALSE)
  1445.       INT8        bYearBiased;               // On input add 1900 to year (TRUE)
  1446.       INT8        bMonthLeadingZero;         // Month with Leading Zero (TRUE)
  1447.       INT8        bDayLeadingZero;           // Day with Leading Zero (TRUE)
  1448.    } FMTDate;
  1449. typedef FMTDate far *pFMTDate;
  1450.  
  1451. typedef struct
  1452.    {
  1453.      CHAR         cTimeSeparator;            // Default ":"
  1454.      INT8         bTwelveHour;               // Represent as 12 Hour time (FALSE)
  1455.      CHAR         szAmString[6];             // Default Null (Only for 12 Hr)
  1456.      CHAR         szPmString[6];             // Default Null (Only for 12 Hr)
  1457.      INT8         bSeconds;                  // Show Seconds (TRUE)
  1458.      INT8         bMilSeconds;               // Show Milli Seconds (FALSE)
  1459.    } FMTTime;
  1460. typedef FMTTime far *pFMTTime;
  1461.  
  1462.  
  1463. typedef struct
  1464. {
  1465.     BYTE    iPrecision;          // 1..64 considered valid
  1466.     BYTE    iSignSpecialPlaces;  // sign:1, special:1, places:6
  1467.     BYTE    iFraction [32];      // bcd nibbles, 00..99 per byte, high nibble 1st
  1468. } FMTBcd;
  1469.  
  1470. typedef FMTBcd far * pFMTBcd;
  1471.  
  1472.  
  1473. //============================================================================
  1474. //                              Error Info
  1475. //============================================================================
  1476.  
  1477. typedef struct {                       // Error info
  1478.       DBIResult      iError;                 // Last error code returned
  1479.       DBIMSG         szErrCode;              // Error Code
  1480.       DBIMSG         szContext1;             // Context dependent info
  1481.       DBIMSG         szContext2;             // More context
  1482.       DBIMSG         szContext3;             // Even more context
  1483.       DBIMSG         szContext4;             // Yet some more context
  1484.     } DBIErrInfo;
  1485.  
  1486. typedef DBIErrInfo far *pDBIErrInfo;
  1487.  
  1488. // Error contexts (To be used with DbiGetErrorContext)
  1489.  
  1490. #define    ecTOKEN         1              // Token (For QBE)
  1491. #define    ecTABLENAME     3              // Table name
  1492. #define    ecFIELDNAME     4              // Field Name
  1493. #define    ecIMAGEROW      5              // Image Row (For QBE)
  1494. #define    ecUSERNAME      6              // eg, In lock conflicts, user involved
  1495. #define    ecFILENAME      7              // File Name
  1496. #define    ecINDEXNAME     8              // Index Name
  1497. #define    ecDIRNAME       9              // Directory Name
  1498. #define    ecKEYNAME       10             // Key Name
  1499. #define    ecALIAS         11             // Alias
  1500. #define    ecDRIVENAME     12             // Drive name ('c:')
  1501. #define    ecNATIVECODE    13             // Native error code
  1502. #define    ecNATIVEMSG     14             // Native error message
  1503. #define    ecLINENUMBER    15             // Line Number
  1504. #define    ecCAPABILITY    16             // Capability
  1505. #define    ecCDRNAME       17             // Client Data Repository Name
  1506. #define    ecUSERERRMSG    18             // User Defined error msg
  1507. #define    ecDROBJNAME     19             // Data Repository Object Name
  1508. #define    ecINTERNALLIMIT 20             // Internal limit
  1509.  
  1510. //============================================================================
  1511. //                  Schema info structures
  1512. //============================================================================
  1513. //                    Database descriptor
  1514. //============================================================================
  1515.  
  1516.  
  1517. // DbiOpenDatabaseList
  1518. typedef struct                               // A given Database Description
  1519.    {
  1520.       DBINAME        szName;                 // Logical name (Or alias)
  1521.       DBINAME        szText;                 // Descriptive text
  1522.       DBIPATH        szPhyName;              // Physical name/path
  1523.       DBINAME        szDbType;               // Database type
  1524.    } DBDesc;
  1525. typedef DBDesc far *pDBDesc;
  1526.  
  1527.  
  1528. //============================================================================
  1529. //                    User info descriptor
  1530. //============================================================================
  1531.  
  1532.  
  1533. //DbiOpenUserList()
  1534. typedef struct                               // User description
  1535.    {
  1536.       DBIUSERNAME    szUserName;
  1537.       UINT16         iNetSession;            // Net level session number
  1538.       UINT16         iProductClass;          // Product class of user
  1539.       CHAR           szSerialNum[22];        // Serial number
  1540.    } USERDesc;
  1541. typedef USERDesc far *pUSERDesc;
  1542.  
  1543. //============================================================================
  1544. //                    Table descriptor
  1545. //============================================================================
  1546.  
  1547.  
  1548. // DbiOpenTableList()
  1549. typedef struct                            // Table description (Base)
  1550.    {
  1551.       DBITBLNAME     szName;                 // Table name(No extension or Dir)
  1552.       DBITBLNAME     szFileName;             // File name
  1553.       DBIEXT         szExt;                  // File extension
  1554.       DBINAME        szType;                 // Driver type
  1555.       DBIDATE        dtDate;                 // Date on the table
  1556.       TIME           tmTime;                 // Time on the table
  1557.       UINT32         iSize;                  // Size in bytes
  1558.       BOOL16         bView;                  // If this a view
  1559.       BOOL16         bSynonym;               // If this is a synonym
  1560.    } TBLBaseDesc;
  1561. typedef TBLBaseDesc far *pTBLBaseDesc;
  1562.  
  1563. typedef struct                            // Table description (Extended part)
  1564.    {
  1565.       DBINAME        szStruct;               // Physical structure
  1566.       UINT16         iRestrVersion;          // Version #
  1567.       UINT16         iRecSize;               // Physical record size
  1568.       UINT16         iFields;                // Number of fields
  1569.       UINT16         iIndexes;               // Number Indexes
  1570.       UINT16         iValChecks;             // Number of field validity checks
  1571.       UINT16         iRintChecks;            // Number of ref. integrity checks
  1572.       UINT32         iRecords;               // Number of records in table
  1573.       BOOL16         bProtected;             // If the table is prot
  1574.       BOOL16         bValidInfo;             // Info available for this table
  1575.                                              // FALSE, if all or part of the
  1576.                                              // extended data not available.
  1577.    } TBLExtDesc;
  1578. typedef TBLExtDesc far *pTBLExtDesc;
  1579.  
  1580. typedef struct                            // Table description (Base + Ext)
  1581.    {
  1582.       TBLBaseDesc    tblBase;                // Base      description
  1583.       TBLExtDesc     tblExt;                 // Extended  description
  1584.    } TBLFullDesc;
  1585. typedef TBLFullDesc far *pTBLFullDesc;
  1586.  
  1587. //============================================================================
  1588. //                    File descriptor
  1589. //============================================================================
  1590.  
  1591.  
  1592. // DbiOpenFileList()
  1593. typedef struct                            // File description
  1594.    {
  1595.       DBIPATH        szFileName;             // File name (No Dir or ext)
  1596.       DBIEXT         szExt;                  // Extension
  1597.       BOOL16         bDir;                   // True, if directory
  1598.       UINT32         iSize;                  // File size in bytes
  1599.       DBIDATE        dtDate;                 // Date on the file
  1600.       TIME           tmTime;                 // Time on the file
  1601.    } FILEDesc;
  1602. typedef FILEDesc far *pFILEDesc;
  1603.  
  1604. //======================================================================
  1605. //            Stored Procedure and Stored Procedure Param descriptor
  1606. //======================================================================
  1607.  
  1608. typedef struct {
  1609.       DBISPNAME      szName;
  1610.       DBIDATE        dtDate;
  1611.       TIME           tmTime;
  1612.    } SPDesc;
  1613. typedef SPDesc far *pSPDesc;
  1614.  
  1615. typedef struct {
  1616.       UINT16         uParamNum;
  1617.       DBINAME        szName;
  1618.       STMTParamType  eParamType;
  1619.       UINT16         uFldType;
  1620.       UINT16         uSubType;
  1621.       INT16          iUnits1;
  1622.       INT16          iUnits2;
  1623.       UINT16         uOffset;
  1624.       UINT16         uLen;
  1625.       UINT16         uNullOffset;
  1626.    } SPParamDesc;
  1627. typedef SPParamDesc far *pSPParamDesc;
  1628.  
  1629. //======================================================================
  1630. //            Function and Function Argument Descriptors
  1631. //======================================================================
  1632. typedef enum
  1633.    {
  1634.      fnAVG,
  1635.      fnCOUNT,
  1636.      fnMIN,
  1637.      fnMAX,
  1638.      fnSUM,
  1639.      fnSTDDEV,
  1640.      fnVARIANCE,
  1641.      fnABS,
  1642.      fnCEIL,
  1643.      fnCOS,
  1644.      fnCOSH,
  1645.      fnEXP,
  1646.      fnFLOOR,
  1647.      fnLN,
  1648.      fnLOG,
  1649.      fnMOD,
  1650.      fnPOWER,
  1651.      fnROUND,
  1652.      fnSIGN,
  1653.      fnSIN,
  1654.      fnSINH,
  1655.      fnSQRT,
  1656.      fnTAN,
  1657.      fnTANH,
  1658.      fnTRUNC,
  1659.      fnCHR,
  1660.      fnCONCAT,
  1661.      fnINITCAP,
  1662.      fnLOWER,
  1663.      fnLPAD,
  1664.      fnLTRIM,
  1665.      fnNLS_INITCAP,
  1666.      fnNLS_LOWER,
  1667.      fnNLS_UPPER,
  1668.      fnREPLACE,
  1669.      fnRPAD,
  1670.      fnRTRIM,
  1671.      fnSOUNDEX,
  1672.      fnSUBSTR,
  1673.      fnSUBSTRB,
  1674.      fnTRANSLATE,
  1675.      fnUPPER,
  1676.      fnASCII,
  1677.      fnINSTR,
  1678.      fnINSTRB,
  1679.      fnLENGTH,
  1680.      fnLENGTHB,
  1681.      fnNLSSORT,
  1682.      fnADD_MONTHS,
  1683.      fnLAST_DAY,
  1684.      fnMONTHS_BETWEEN,
  1685.      fnNEW_TIME,
  1686.      fnNEXT_DAY,
  1687.      fnSYSDATE,
  1688.      fnCONVERT,
  1689.      fnTO_CHAR,
  1690.      fnTO_DATE,
  1691.      fnTO_MULTI_BYTE,
  1692.      fnTO_NUMBER,
  1693.      fnTO_SINGLE_BYTE,
  1694.      fnUID,
  1695.      fnUSER,
  1696.      fnORACLEMISC,
  1697.      fnACOS,
  1698.      fnASIN,
  1699.      fnATAN,
  1700.      fnATN2,
  1701.      fnCOT,
  1702.      fnDEGREES,
  1703.      fnLOG10,
  1704.      fnPI,
  1705.      fnRADIANS,
  1706.      fnRAND,
  1707.      fnTEXTPTR,
  1708.      fnTEXTVALID,
  1709.      fnCHARINDEX,
  1710.      fnDIFFERENCE,
  1711.      fnPATINDEX,
  1712.      fnREPLICATE,
  1713.      fnREVERSE,
  1714.      fnRIGHT,
  1715.      fnSPACE,
  1716.      fnSTR,
  1717.      fnSTUFF,
  1718.      fnCOL_NAME,
  1719.      fnCOL_LENGTH,
  1720.      fnDATALENGTH,
  1721.      fnDB_ID,
  1722.      fnDB_NAME,
  1723.      fnHOST_ID,
  1724.      fnHOST_NAME,
  1725.      fnINDEX_COL,
  1726.      fnOBJECT_ID,
  1727.      fnOBJECT_NAME,
  1728.      fnUSER_ID,
  1729.      fnUSER_NAME,
  1730.      fnLEFT,
  1731.      fnLOCATE,
  1732.      fnTRUNCATE,
  1733.      fnCURTIME,
  1734.      fnDAYNAME,
  1735.      fnDAYOFMONTH,
  1736.      fnDAYOFWEEK,
  1737.      fnDAYOFYEAR,
  1738.      fnHOUR,
  1739.      fnMINUTE,
  1740.      fnMONTH,
  1741.      fnMONTHNAME,
  1742.      fnNOW,
  1743.      fnQUARTER,
  1744.      fnSECOND,
  1745.      fnWEEK,
  1746.      fnYEAR,
  1747.  
  1748.    } DBISTDFuncs;
  1749.  
  1750. #define     fnSCALARS_ALLOW_CONSTANTS            0x0001, // fn args may contain refeences to constants
  1751. #define     fnSCALARS_ALLOW_COLUMNS              0x0002, // fn args may contain refeences to columns
  1752. #define     fnSCALARS_ALLOW_PARAMETERS           0x0004, // fn args may contain refeences to parameters
  1753. #define     fnSCALARS_ALLOW_FUNCTIONS            0x0008, // fn args may contain refeences to functions
  1754. #define     fnSCALARS_ALLOW_USER_DEFINED_FUNCS   0x0010, // fn args may contain refeences to user defined functions
  1755. #define     fnSCALARS_ALLOW_SUBQUERIES           0x0020, // fn args can contain subqueries
  1756. #define     fnSCALARS_ALLOW_CORRELATION          0x0040  // fn subqueries can be correlated
  1757.  
  1758. typedef enum
  1759.    {
  1760.    fnListINCL_USER_DEF         = 0x0001   // include user-defined functions
  1761.    } DBIFUNCOpts;
  1762.  
  1763. typedef struct {
  1764.       DBINAME        szName;           // Function name
  1765.       CHAR           szDesc[255];      // Short description
  1766.       UINT16         uOverload;        // Number of function overloads
  1767.       DBISTDFuncs    eStdFn;           // Corresponds to DBI standard function
  1768.    } DBIFUNCDesc;
  1769. typedef DBIFUNCDesc far *pDBIFUNCDesc;
  1770.  
  1771. typedef struct {
  1772.       UINT16         uArgNum;          // Argument position num; 0 for fn return
  1773.       UINT16         uFldType;         // Field type
  1774.       UINT16         uSubType;         // Field subtype (if applicable)
  1775.       UINT16         ufuncFlags;       // Function flags
  1776.    } DBIFUNCArgDesc;
  1777.  
  1778. typedef DBIFUNCArgDesc far *pDBIFUNCArgDesc;
  1779.  
  1780. //============================================================================
  1781. //                   Configuration Info Descriptor
  1782. //============================================================================
  1783.  
  1784. typedef enum
  1785.    {
  1786.      cfgPersistent  = 0,   // Persistent only
  1787.      cfgSession     = 1,   // Session relative only
  1788.      cfgAll         = 2    // All (union)
  1789.    } CFGMode;
  1790.  
  1791.  
  1792. // DbiOpenCfgInfoList()
  1793. typedef struct                            // Config description
  1794.    {
  1795.       DBINAME        szNodeName;                // Node name
  1796.       CHAR           szDescription[DBIMAXSCFLDLEN]; // Node description
  1797.       UINT16         iDataType;                 // Value type
  1798.       CHAR           szValue[DBIMAXSCFLDLEN];   // Value
  1799.       BOOL16         bHasSubnodes;              // True, if not leaf node
  1800.    } CFGDesc;
  1801. typedef CFGDesc far *pCFGDesc;
  1802.  
  1803.  
  1804. //============================================================================
  1805. //                    Family descriptor
  1806. //============================================================================
  1807.  
  1808.  
  1809. typedef enum                              // Family member types
  1810.    {
  1811.       fmlUNKNOWN     = 0,
  1812.       fmlTABLE       = 1,
  1813.       fmlINDEX       = 2,
  1814.       fmlFORM        = 3,
  1815.       fmlREPORT      = 4,
  1816.       fmlVALCHECK    = 5,
  1817.       fmlSECINDEX    = 6,
  1818.       fmlSECINDEX2   = 7,
  1819.       fmlBLOBFILE    = 8
  1820.    } FMLType;
  1821. typedef FMLType far *pFMLType;
  1822.  
  1823. // DbiOpenFamilyList()
  1824. typedef struct {                          // Family record structure
  1825.       DBINAME        szName;                 // Member name (documentary)
  1826.       UINT16         iId;                    // Id (if applicable)
  1827.       FMLType        eType;                  // Member type
  1828.       DBIPATH        szFileName;             // File name of member
  1829.    } FMLDesc;
  1830. typedef FMLDesc far *pFMLDesc;
  1831.  
  1832.  
  1833. //============================================================================
  1834. //                    Language driver descriptor
  1835. //============================================================================
  1836.  
  1837.  
  1838. #define DBIOEM_CP                    1      // (dos)
  1839. #define DBIANSI_CP                   2      // (win)
  1840. #define DBIOS2_CP                    3
  1841. /* UNIX etc. */
  1842. #define DBISUNOS_CP                  4
  1843. #define DBIVMS_CP                    5
  1844. #define DBIHPUX_CP                   6
  1845. #define DBIULTRIX_CP                 7
  1846. #define DBIAIX_CP                    8
  1847. #define DBIAUX_CP                    9
  1848. #define DBIXENIX_CP                 10
  1849. #define DBIMAC_CP                   11
  1850. #define DBINEXT_CP                  12
  1851.  
  1852. // DbiOpenLdList()
  1853. typedef struct                         // Lang Driver description
  1854.    {
  1855.       DBINAME        szName;               // Driver symbolic name
  1856.       DBINAME        szDesc;               // Description
  1857.       UINT16         iCodePage;
  1858.       UINT16         PrimaryCpPlatform;
  1859.       UINT16         AlternateCpPlatform;
  1860.    } LDDesc;
  1861. typedef LDDesc far *pLDDesc;
  1862.  
  1863. //============================================================================
  1864. //                    Lock descriptor
  1865. //============================================================================
  1866.  
  1867. // Lock types in LOCKDesc:
  1868.  
  1869. #define lckRECLOCK         0                    // Normal Record lock (Write)
  1870. #define lckRRECLOCK        1                    // Special Pdox Record lock (Read)
  1871. #define lckGROUPLOCK       2                    // Pdox Group lock
  1872. #define lckIMGAREA         3                    // Pdox Image area
  1873. #define lckTABLEREG        4                    // Table registration/Open (No lock)
  1874. #define lckTABLEREAD       5                    // Table Read lock
  1875. #define lckTABLEWRITE      6                    // Table Write lock
  1876. #define lckTABLEEXCL       7                    // Table Exclusive lock
  1877. #define lckUNKNOWN         9                    // Unknown lock
  1878.  
  1879.  
  1880. // DbiOpenLockList()
  1881. typedef struct                               // Lock Description
  1882.    {
  1883.       UINT16         iType;                     // Lock type (0 for rec lock)
  1884.       DBIUSERNAME    szUserName;                // Lock owner
  1885.       UINT16         iNetSession;               // Net level Session number
  1886.       UINT16         iSession;                  // Idapi session#, if our lock
  1887.       UINT32         iRecNum;                   // If a record lock
  1888.       UINT16         iInfo;                     // Info for table locks
  1889.    } LOCKDesc;
  1890. typedef LOCKDesc far *pLOCKDesc;
  1891.  
  1892. //============================================================================
  1893. //                    Filter description
  1894. //============================================================================
  1895.  
  1896. typedef enum {
  1897.  
  1898.       // Relational operators.
  1899.  
  1900.       canNOTDEFINED        = 0,        //                                  (*)
  1901.       canISBLANK,                      // CANUnary;  is operand blank.     (*)
  1902.       canNOTBLANK,                     // CANUnary;  is operand not blank. (*)
  1903.  
  1904.       canEQ,                           // CANBinary, CANCompare; equal.                (*)
  1905.       canNE,                           // CANBinary; NOT equal.            (*)
  1906.       canGT,                           // CANBinary; greater than.         (*)
  1907.       canLT,                           // CANBinary; less than.            (*)
  1908.       canGE,                           // CANBinary; greater or equal.     (*)
  1909.       canLE,                           // CANBinary; less or equal.        (*)
  1910.  
  1911.       // Logical operators.
  1912.  
  1913.       canNOT,                          // CANUnary; NOT                    (*)
  1914.       canAND,                          // CANBinary; AND                   (*)
  1915.       canOR,                           // CANBinary; OR                    (*)
  1916.  
  1917.       // Operators identifing leaf operands.
  1918.  
  1919.       canTUPLE,                        // CANUnary; Entire record is operand.
  1920.       canFIELD,                        // CANUnary; operand is field       (*)
  1921.       canCONST,                        // CANUnary; operand is constant    (*)
  1922.  
  1923.       // Arithmetic operators.
  1924.  
  1925.       canMINUS,                        // CANUnary;  minus.
  1926.       canADD,                          // CANBinary; addition.
  1927.       canSUB,                          // CANBinary; subtraction.
  1928.       canMUL,                          // CANBinary; multiplication.
  1929.       canDIV,                          // CANBinary; division.
  1930.       canMOD,                          // CANBinary; modulo division.
  1931.       canREM,                          // CANBinary; remainder of division.
  1932.  
  1933.       // Aggregate type operators.
  1934.  
  1935.       canSUM,                          // CANBinary, accumulate sum of.
  1936.       canCOUNT,                        // CANBinary, accumulate count of.
  1937.       canMIN,                          // CANBinary, find minimum of.
  1938.       canMAX,                          // CANBinary, find maximum of.
  1939.       canAVG,                          // CANBinary, find average of.
  1940.  
  1941.       // Miscellaneous operators.
  1942.  
  1943.       canCONT,                         // CANBinary; provides a link between two
  1944.                                        // expression subtrees of a tree.
  1945.       canUDF,                          // CANBinary; invokes a User defined fn
  1946.  
  1947.       canCONTINUE,                     // CANUnary; Stops evaluating records
  1948.                                        // when operand evaluates to false (forward sequential access only)
  1949.  
  1950.       canLIKE                          // CANCompare, extended binary compare       (*)
  1951.  
  1952.    } CANOp;
  1953.  
  1954. typedef CANOp far *pCANOp;
  1955.  
  1956. typedef enum {                      // Node Class
  1957.  
  1958.       nodeNULL          = 0,           // Null node                  (*)
  1959.       nodeUNARY,                       // Node is a unary            (*)
  1960.       nodeBINARY,                      // Node is a binary           (*)
  1961.       nodeCOMPARE,                     // Node is a compare          (*)
  1962.       nodeFIELD,                       // Node is a field            (*)
  1963.       nodeCONST,                       // Node is a constant         (*)
  1964.       nodeTUPLE,                       // Node is a record
  1965.       nodeCONTINUE,                    // Node is a continue node    (*)
  1966.       nodeUDF                          // Node is a UDF node
  1967.    } NODEClass;
  1968.  
  1969. // NODE definitions including misc data structures
  1970. //-------------------------------------------------
  1971.  
  1972. typedef struct {                    // Header part common to all     (*)
  1973.       NODEClass      nodeClass;
  1974.       CANOp          canOp;
  1975.    } CANHdr;
  1976. typedef CANHdr far *pCANHdr;
  1977.  
  1978. typedef struct {                    // Unary Node                    (*)
  1979.       NODEClass      nodeClass;
  1980.       CANOp          canOp;
  1981.       UINT16         iOperand1;        // Byte offset of Operand node
  1982.    } CANUnary;
  1983. typedef CANUnary far * pCANUnary;
  1984.  
  1985. typedef struct {                    // Binary Node                   (*)
  1986.       NODEClass      nodeClass;
  1987.       CANOp          canOp;
  1988.       UINT16         iOperand1;        // Byte offset of Op1
  1989.       UINT16         iOperand2;        // Byte offset of Op2
  1990.    } CANBinary;
  1991. typedef CANBinary far * pCANBinary;
  1992.  
  1993. typedef struct {                    // Field
  1994.       NODEClass      nodeClass;
  1995.       CANOp          canOp;
  1996.       UINT16         iFieldNum;
  1997.       UINT16         iNameOffset;      // Name offset in Literal pool
  1998.    } CANField;
  1999. typedef CANField far * pCANField;
  2000.  
  2001. typedef struct {                    // Constant
  2002.       NODEClass      nodeClass;
  2003.       CANOp          canOp;
  2004.       UINT16         iType;            // Constant type.
  2005.       UINT16         iSize;            // Constant size. (in bytes)
  2006.       UINT16         iOffset;          // Offset in the literal pool.
  2007.    } CANConst;
  2008. typedef CANConst far * pCANConst;
  2009.  
  2010. typedef struct {                    // Tuple (record)
  2011.       NODEClass      nodeClass;
  2012.       CANOp          canOp;
  2013.       UINT16         iSize;            // Record size. (in bytes)
  2014.    } CANTuple;
  2015. typedef CANTuple far * pCANTuple;
  2016.  
  2017. typedef struct {                    // Break Node                    (*)
  2018.       NODEClass      nodeClass;
  2019.       CANOp          canOp;
  2020.       UINT16         iContOperand;     // Continue if operand is true.
  2021.                                        // else stop evaluating records.
  2022.    } CANContinue;
  2023. typedef CANContinue far * pCANContinue;
  2024.  
  2025. typedef struct {                    // Extended compare Node (text fields) (*)
  2026.       NODEClass      nodeClass;
  2027.       CANOp          canOp;               // canLIKE, canEQ
  2028.       BOOL16         bCaseInsensitive;    // 3 val: UNKNOWN = "fastest", "native"
  2029.       UINT16         iPartialLen;         // Partial fieldlength (0 is full length)
  2030.       UINT16         iOperand1;           // Byte offset of Op1
  2031.       UINT16         iOperand2;           // Byte offset of Op2
  2032.    } CANCompare;
  2033. typedef CANCompare far * pCANCompare;
  2034.  
  2035.  
  2036. //This is the node to be used to pass User defined functions
  2037. #define iLangSQL     0              // Common SQL dialect
  2038. #define iDbaseExpr   2              // This is also the driver ID for dBASE
  2039.  
  2040. typedef struct {                    // A user defined function
  2041.       NODEClass      nodeClass;
  2042.       CANOp          canOp;
  2043.  
  2044.       UINT16         iOffSzFuncName;   // Offset in literal pool to Function Name string(0 terminated)
  2045.  
  2046.       UINT16         iOperands;        // Byte offset of Operands (concatenated using canCONT)
  2047.  
  2048.       //The fields below are hints that specific drivers can make use of
  2049.       UINT16         iDrvDialect;      // Driver Dialect ID for UDF string supplied
  2050.       UINT16         iOffSzUDF;        // Offset in literal pool to UDF string (0 terminated)
  2051.    } CANUdf;
  2052. typedef CANUdf far * pCANUdf;
  2053.  
  2054. #if !defined(MIDL)
  2055. typedef union {
  2056.       CANHdr         canHdr;
  2057.       CANUnary       canUnary;
  2058.       CANBinary      canBinary;
  2059.       CANField       canField;
  2060.       CANConst       canConst;
  2061.       CANTuple       canTuple;
  2062.       CANContinue    canContinue;
  2063.       CANCompare     canCompare;
  2064.    } CANNode;
  2065. typedef CANNode far *pCANNode;
  2066. #endif // !defined(MIDL)
  2067.  
  2068. // Linear exression tree
  2069. //----------------------
  2070.  
  2071. # define CANEXPRVERSION   2
  2072.  
  2073. typedef struct {                    // Expression Tree
  2074.       UINT16         iVer;             // Version tag of expression.
  2075.       UINT16         iTotalSize;       // Size of this structure
  2076.       UINT16         iNodes;           // Number of nodes
  2077.       UINT16         iNodeStart;       // Starting offet of Nodes in this
  2078.       UINT16         iLiteralStart;    // Starting offset of Literals in this
  2079.       // Nodes and Literals are here
  2080.    } CANExpr;
  2081. typedef CANExpr far * pCANExpr;
  2082. typedef pCANExpr far *ppCANExpr;
  2083.  
  2084.  
  2085. //pfGENFilter returns TRUE, FALSE or ABORT
  2086. #define ABORT     -2
  2087.  
  2088. #if !defined(MIDL)
  2089. typedef INT16 (DBIFN * pfGENFilter)
  2090.    (
  2091.       UINT32            ulClientData,
  2092.       pBYTE             pRecBuf,
  2093.       UINT32            iPhyRecNum
  2094.    ) ;
  2095. #endif // !defined(MIDL)
  2096.  
  2097. typedef UINT32 hDBIFilter ;
  2098. typedef hDBIFilter far *phDBIFilter ;
  2099.  
  2100.  
  2101. #if !defined(MIDL)
  2102. typedef struct
  2103.    {
  2104.       UINT16          iFilterId;    // Id for filter
  2105.       hDBIFilter      hFilter;      // Filter handle
  2106.       UINT32          iClientData;  // Client supplied data
  2107.       UINT16          iPriority;    // 1..N with 1 being highest
  2108.       BOOL16          bCanAbort;    // TRUE : pfFilter can return ABORT
  2109.       pfGENFilter     pfFilter;     // Client filter function
  2110.       pVOID           pCanExpr;     // Supplied expression
  2111.       BOOL16          bActive ;     // TRUE : filter is active
  2112.    } FILTERInfo;
  2113. typedef FILTERInfo far *pFILTERInfo;
  2114. #endif // !defined(MIDL)
  2115.  
  2116. #ifndef NODBIQBE
  2117.  
  2118. //---------------------------------------------------------------------------
  2119. //   DBI Query related types
  2120. //---------------------------------------------------------------------------
  2121.  
  2122. #define MAXQBEEXPRSIZE  300             // size of one QBE expr
  2123.  
  2124.  
  2125. typedef struct  _DBIQryProp
  2126. {
  2127.    DBINAME    szQryName;       // Name of query
  2128.    DBIQryLang eLang;           // Language
  2129.    INT16      iQryPrice;       // Query price 1..100 (1 = cheap, 100 = expensive)
  2130.    INT16      iNumTables;      // Number of tables in join.  0 = unknown.
  2131.    BOOL16     bHasAnswer;
  2132.    BOOL16     bInsert;
  2133.    BOOL16     bDelete;
  2134.    BOOL16     bChange;
  2135. }  DBIQryProp, far *pDBIQryProp;
  2136.  
  2137.  
  2138. #define DBIQBE_ANSWERBIT    (0x1)    // Answer table bit flag
  2139. #define DBIQBE_INSERTEDBIT  (0x2)    // Inserted table bit flag
  2140. #define DBIQBE_DELETEDBIT   (0x4)    // Deleted table bit flag
  2141. #define DBIQBE_CHANGEDBIT   (0x8)    // Changed table bit flag
  2142. #define DBIQBE_ERRORINSBIT  (0x10)   // Error inserted table bit flag
  2143. #define DBIQBE_ERRORDELBIT  (0x20)   // Error deleted table bit flag
  2144. #define DBIQBE_ERRORCHGBIT  (0x40)   // Error changed table bit flag
  2145.  
  2146.  
  2147. // answer cursor properties:
  2148.  
  2149. #define bAnsHasLiveFields  0x1
  2150. #define bAnsHasFilter      0x2
  2151. #define bAnsHasFieldMap    0x4
  2152. #define bAnsHasCalcField   0x8
  2153. #define bAnsHasLiveBlob    0x10
  2154.  
  2155. // answer field properties:
  2156.  
  2157. #define bIsAnsFieldLive    0x1
  2158.  
  2159.  
  2160.  
  2161. typedef enum
  2162. {
  2163.    dbiqryDEFAULT = 0,
  2164.    dbiqryDIRTY   = 1,
  2165.    dbiqryCLEAN   = 2,
  2166.    dbiqryRESTART = 3
  2167. } DBIQryType, far *pDBIQryType;
  2168.  
  2169.  
  2170. //---------------------------------------------------------------------------
  2171. typedef struct
  2172. {
  2173.    UINT16    stepsInQry;      // Total steps in query.
  2174.    UINT16    stepsCompleted;  // Steps completed out of total (steps may be skipped).
  2175.    UINT32    totElemInStep;   // Total elements in current step.
  2176.    UINT32    elemCompleted;   // Elements completed in current step.
  2177. } DBIQryProgress, far *pDBIQryProgress;
  2178.  
  2179.  
  2180. typedef enum
  2181. {
  2182.    qryModeNONE     = 0,       // Reserved
  2183.    qryModeLOCAL    = 1,
  2184.    qryModeSERVER   = 2,
  2185.    qryModeEITHER   = 3,
  2186.    qryModeNOWLOCAL = 4        // used only in call back, when failed on server
  2187. } QryEvalMode;
  2188.  
  2189.  
  2190. // values for client indicating live/canned preference about query execution
  2191. typedef enum
  2192. {
  2193.    wantDEFAULT     = 0,        // Default , same as wantCANNED
  2194.    wantLIVE        = 1,        // Want live data even if extra effort (no guarantee)
  2195.    wantCANNED      = 2,        // Want canned data even if extra effort (guaranteed)
  2196.    wantSPEED       = 3         // Let query manager decide, find out afterwards
  2197. } LIVENESS;
  2198.  
  2199.  
  2200. typedef struct
  2201. {
  2202.    INT16       length;        // Length in bytes of this structure
  2203.    BOOL16      blankzeroes;   // TRUE if blanks to be regarded as zeros
  2204.    FMTDate     dateFormat;    // Date format
  2205.    FMTNumber   numberFormat;  // Number format
  2206.    BOOL16      bNeedAuxTbls;  // If FALSE, don't bother with DELETED/ERRDEL, etc.
  2207.    QryEvalMode qryMode;       // qryModeSERVER, qryModeLOCAL or qryModeEITHER.
  2208.    BOOL16      perQrySqlMode;
  2209.    LIVENESS    livenessDesired;
  2210. } QueryLowProps, far *pQueryLowProps;
  2211.  
  2212. #endif  // NODBIQBE
  2213.  
  2214. #endif  // NODBITYPES
  2215.  
  2216. #ifndef NODBISYMBOLS
  2217. //=======================================================================================
  2218. //                      DBI symbols
  2219. //=======================================================================================
  2220.  
  2221. # define DBIMOD_BEGIN         (0x3F00U)
  2222.  
  2223. # define DBIMOD_QBE           (DBIMOD_BEGIN + 1)
  2224. # define DBIMOD_SQLG          (DBIMOD_BEGIN + 2)
  2225. # define DBIMOD_LEGO          (DBIMOD_BEGIN + 3)
  2226. # define DBIMOD_LOCKMNGR      (DBIMOD_BEGIN + 4)
  2227. # define DBIMOD_SQLDRIVER     (DBIMOD_BEGIN + 5)
  2228. # define DBIMOD_OS            (DBIMOD_BEGIN + 6)
  2229. # define DBIMOD_DBASEDRV      (DBIMOD_BEGIN + 7)
  2230. # define DBIMOD_CDR           (DBIMOD_BEGIN + 8)
  2231.  
  2232. # define DBIMOD_END           (DBIMOD_BEGIN + 9)
  2233.  
  2234. //---------------------------------------------------------------------------
  2235.  
  2236. # define DBISYM_BEGIN         (DBIMOD_END + 1)
  2237.  
  2238. # define DBISYM_TOKEN         (DBISYM_BEGIN + ecTOKEN)
  2239. # define DBISYM_TABLENAME     (DBISYM_BEGIN + ecTABLENAME)
  2240. # define DBISYM_FIELDNAME     (DBISYM_BEGIN + ecFIELDNAME)
  2241. # define DBISYM_IMAGEROW      (DBISYM_BEGIN + ecIMAGEROW)
  2242. # define DBISYM_USERNAME      (DBISYM_BEGIN + ecUSERNAME)
  2243. # define DBISYM_FILENAME      (DBISYM_BEGIN + ecFILENAME)
  2244. # define DBISYM_INDEXNAME     (DBISYM_BEGIN + ecINDEXNAME)
  2245. # define DBISYM_DIRNAME       (DBISYM_BEGIN + ecDIRNAME)
  2246. # define DBISYM_KEYNAME       (DBISYM_BEGIN + ecKEYNAME)
  2247. # define DBISYM_ALIAS         (DBISYM_BEGIN + ecALIAS)
  2248. # define DBISYM_DRIVENAME     (DBISYM_BEGIN + ecDRIVENAME)
  2249. # define DBISYM_NATIVECODE    (DBISYM_BEGIN + ecNATIVECODE)
  2250. # define DBISYM_NATIVEMSG     (DBISYM_BEGIN + ecNATIVEMSG)
  2251. # define DBISYM_LINENUMBER    (DBISYM_BEGIN + ecLINENUMBER)
  2252. # define DBISYM_CAPABILITY    (DBISYM_BEGIN + ecCAPABILITY)
  2253. # define DBISYM_CDRNAME       (DBISYM_BEGIN + ecCDRNAME)
  2254. # define DBISYM_USERERRMSG    (DBISYM_BEGIN + ecUSERERRMSG)
  2255. # define DBISYM_DROBJNAME     (DBISYM_BEGIN + ecDROBJNAME)
  2256. # define DBISYM_INTERNALLIMIT (DBISYM_BEGIN + ecINTERNALLIMIT)
  2257.  
  2258. # define DBISYM_BASEEND       (DBISYM_BEGIN + 100)
  2259.  
  2260. //-----------------------------------------------------------------------------
  2261.  
  2262. # define DBISYM_MISC          (DBISYM_BASEEND + 1)
  2263.  
  2264. # define DBISYM_WORK          (DBISYM_MISC + 1)
  2265. # define DBISYM_PRIV          (DBISYM_MISC + 2)
  2266. # define DBISYM_COPY          (DBISYM_MISC + 3)
  2267. # define DBISYM_APPEND        (DBISYM_MISC + 4)
  2268. # define DBISYM_TXTPROBFLD1   (DBISYM_MISC + 5)
  2269. # define DBISYM_TXTPROBFLD2   (DBISYM_MISC + 6)
  2270. # define DBISYM_TXTPROBFLD3   (DBISYM_MISC + 7)
  2271.  
  2272. # define DBISYM_END           (DBIMOD_BEGIN + 0x3FFF)
  2273.  
  2274.  
  2275.  
  2276. //=======================================================================================
  2277. //                      DBI Config symbols
  2278. //=======================================================================================
  2279.  
  2280.  
  2281.  
  2282. // Categories
  2283.  
  2284. #define szCFGSYSTEM        "SYSTEM"
  2285. #define szCFGDRIVER        "DRIVERS"
  2286. #define szCFGDATABASE      "DATABASES"
  2287. #define szCFGREPOSITORY    "REPOSITORIES"
  2288.  
  2289. //--------------------------------------------------------------------------
  2290. // System Fields
  2291. //--------------------------------------------------------------------------
  2292.  
  2293. #define szCFGSYSVERSION       "VERSION"
  2294. #define szCFGSYSNETTYPE       "NET TYPE"
  2295. #define szCFGSYSNETDIR        "NET DIR"
  2296. #define szCFGSYSLOCALSHARE    "LOCAL SHARE"
  2297. #define szCFGSYSLANGDRV       "LANGDRIVER"
  2298. #define szCFGSYSLANGDRVDIR    "LANGDRVDIR"
  2299. #define szCFGSYSMINBUF        "MINBUFSIZE"
  2300. #define szCFGSYSMAXBUF        "MAXBUFSIZE"
  2301. #define szCFGSYSLOCKRETRY     "LOCKRETRY"
  2302. #define szCFGSYSFLAGS         "SYSFLAGS"
  2303. #define szCFGMAXFILEHANDLES   "MAXFILEHANDLES"
  2304. #define szCFGSQLQRYMODE       "SQLQRYMODE"
  2305. #define szCFGLOWMEMLIMIT      "LOW MEMORY USAGE LIMIT"  // Use this instead of NOLOWMEMBUF
  2306. #define szCFGSYSODBCCFGIMPORT "AUTO ODBC"
  2307. #define szCFGAUTOODBC         "AUTO ODBC"
  2308. #define szCFGDEFDRV           "DEFAULT DRIVER"
  2309. #define szCFGSYSLOCALREPOSITORY "DATA REPOSITORY"
  2310. //#define szCFGSYSCOMMONREPOSITORY "COMMON REPOSITORY"
  2311. #define szCFGSYSSHAREDMEMSIZE      "SHAREDMEMSIZE"
  2312. #define szCFGSYSSHAREDMEMLOCATION  "SHAREDMEMLOCATION"
  2313.  
  2314.  
  2315. //--------------------------------------------------------------------------
  2316. // Driver Fields
  2317. //--------------------------------------------------------------------------
  2318.  
  2319. #define szCFGDRVVERSION       "VERSION"
  2320. #define szCFGDRVTYPE          "TYPE"
  2321. #define szCFGDRVDLL           "DLL"
  2322. #define szCFGDRVDLL32         "DLL32"
  2323. #define szCFGDRVFLAGS         "DRIVER FLAGS"
  2324. #define szCFGDRVLANGDRIVER    "LANGDRIVER"
  2325. #define szCFGDRVFILLFACTOR    "FILL FACTOR"
  2326. #define szCFGDRVBLOCKSIZE     "BLOCK SIZE"
  2327. #define szCFGDRVLOCKPROTOCOL  "LOCKPROTOCOL"
  2328. #define szCFGDRVLEVEL         "LEVEL"
  2329. #define szCFGDRVVENDINIT      "VENDOR INIT"
  2330. #define szCFGDRVTRACEMODE     "TRACE MODE"
  2331.  
  2332. //--------------------------------------------------------------------------
  2333. // Dbase Driver fields
  2334. //--------------------------------------------------------------------------
  2335.  
  2336. #define szCFGDRVMEMOBLOCKSIZE "MEMO FILE BLOCK SIZE"
  2337. #define szCFGDRVMDXBLOCKSIZE  "MDX BLOCK SIZE"
  2338.  
  2339.  
  2340. //--------------------------------------------------------------------------
  2341. // Driver Nodes
  2342. //--------------------------------------------------------------------------
  2343.  
  2344. #define szCFGDRVINIT         "INIT"
  2345. #define szCFGDBCREATE        "DB CREATE"
  2346. #define szCFGDBOPEN          "DB OPEN"
  2347. #define szCFGTBLCREATE       "TABLE CREATE"
  2348. #define szCFGTBLOPEN         "TABLE OPEN"
  2349.  
  2350. //--------------------------------------------------------------------------
  2351. // Database Nodes
  2352. //--------------------------------------------------------------------------
  2353.  
  2354. #define szCFGDBINFO          "DB INFO"
  2355.  
  2356. //--------------------------------------------------------------------------
  2357. // Database fields
  2358. //--------------------------------------------------------------------------
  2359.  
  2360. #define szCFGDBTYPE          "TYPE"
  2361. #define szCFGDBPATH          "PATH"
  2362. #define szCFGDBDEFAULTDRIVER "DEFAULT DRIVER"
  2363. #define szCFGDBENABLEBCD     "ENABLE BCD"
  2364.  
  2365. //--------------------------------------------------------------------------
  2366. // Others
  2367. //--------------------------------------------------------------------------
  2368.  
  2369. #define szCFGINIT            "INIT"
  2370. #define szTYPE               "TYPE"
  2371. #define szCFGDBSTANDARD      "STANDARD"
  2372. #define szCFGTRUE            "TRUE"
  2373. #define szCFGFALSE           "FALSE"
  2374. #define szOPENMODE           "OPEN MODE"
  2375. #define szREADWRITE          "READ/WRITE"
  2376. #define szREADONLY           "READ ONLY"
  2377. #define szSHAREMODE          "SHARE MODE"
  2378. #define szEXCLUSIVE          "EXCLUSIVE"
  2379. #define szSHARED             "SHARED"
  2380. #define szUSERNAME           "USER NAME"
  2381. #define szSERVERNAME         "SERVER NAME"
  2382. #define szDATABASENAME       "DATABASE NAME"
  2383. #define szSCHEMASIZE         "SCHEMA CACHE SIZE"
  2384. #define szCFGSTRICTINTEGRITY "STRICTINTEGRTY"
  2385. #define szSQLPASSMODE        "SQLPASSTHRU MODE"
  2386. #define szNOTSHARED          "NOT SHARED"
  2387. #define szSHAREDAUTOCOMMIT   "SHARED AUTOCOMMIT"
  2388. #define szSHAREDNOAUTOCOMMIT "SHARED NOAUTOCOMMIT"
  2389. #define szSCHEMATIME         "SCHEMA CACHE TIME"
  2390. #define szMAXQUERYTIME       "MAX QUERY TIME"
  2391. #define szMAXROWS            "MAX ROWS"
  2392. #define szLISTSYNONYMS       "LIST SYNONYMS"
  2393. #define szSYNNONE            "NONE"
  2394. #define szSYNALL             "ALL"
  2395. #define szSYNPRIVATE         "PRIVATE"
  2396. #define szBATCHCOUNT         "BATCH COUNT"
  2397. #define szENABLESCHEMACACHE  "ENABLE SCHEMA CACHE"
  2398. #define szSCHEMACACHEDIR     "SCHEMA CACHE DIR"
  2399. #define szSYBLHOST          "HOST NAME"
  2400. #define szSYBLAPP           "APPLICATION NAME"
  2401. #define szSYBLNATLANG       "NATIONAL LANG NAME"
  2402. #define szTDSPACKETSIZE      "TDS PACKET SIZE"
  2403. #define szORAINTEGER         "ENABLE INTEGERS"
  2404.  
  2405. //--------------------------------------------------------------------------
  2406. // Repository fields
  2407. //--------------------------------------------------------------------------
  2408.  
  2409. #define szCFGDRDBNAME        "DATABASE NAME"
  2410. #define szCFGDRTBLNAME       "TABLE NAME"
  2411. #define szCFGDRLANGDRIVER    "LANGUAGE DRIVER"
  2412. #define szCFGDRDESC          "DESCRIPTION"
  2413.  
  2414.  
  2415. //--------------------------------------------------------------------------
  2416. // SYSTEM DATE/TIME/NUMBER FORMATS
  2417. // SYSTEM nodes:
  2418. //--------------------------------------------------------------------------
  2419. #define  szCFGFORMAT          "FORMATS"
  2420.  
  2421. //--------------------------------------------------------------------------
  2422. // Format nodes:
  2423. //--------------------------------------------------------------------------
  2424. #define  szCFGDATE           "DATE"
  2425. #define  szCFGTIME           "TIME"
  2426. #define  szCFGNUMBER         "NUMBER"
  2427.  
  2428. //--------------------------------------------------------------------------
  2429. // DATE and/or TIME fields:
  2430. //--------------------------------------------------------------------------
  2431. #define szCFGSEPARATOR        "SEPARATOR"
  2432. #define szCFGMODE             "MODE"
  2433. #define szCFGFOURDIGITYEAR    "FOURDIGITYEAR"
  2434. #define szCFGYEARBIASED       "YEARBIASED"
  2435. #define szCFGLEADINGZEROM     "LEADINGZEROM"
  2436. #define szCFGLEADINGZEROD     "LEADINGZEROD"
  2437. #define szCFGTWELVEHOUR       "TWELVEHOUR"
  2438. #define szCFGAMSTRING         "AMSTRING"
  2439. #define szCFGPMSTRING         "PMSTRING"
  2440. #define szCFGSECONDS          "SECONDS"
  2441. #define szCFGMILSECONDS       "MILSECONDS"
  2442.  
  2443. //--------------------------------------------------------------------------
  2444. // Number fields:
  2445. //--------------------------------------------------------------------------
  2446. #define szCFGDECIMALSEPARATOR    "DECIMALSEPARATOR"
  2447. #define szCFGTHOUSANDSEPARATOR   "THOUSANDSEPARATOR"
  2448. #define szCFGDECIMALDIGITS       "DECIMALDIGITS"
  2449. #define szCFGLEADINGZERON        "LEADINGZERON"
  2450.  
  2451.  
  2452.  
  2453. // String resoure id's for each string listed above
  2454.  
  2455. #define   DBICFG_BASE              0x3A00
  2456.  
  2457. //--------------------------------------------------------------------------
  2458. // Categories
  2459. //--------------------------------------------------------------------------
  2460. #define iCFGSYSTEM               (DBICFG_BASE + 1)
  2461. #define iCFGDRIVER               (DBICFG_BASE + 2)
  2462. #define iCFGDATABASE             (DBICFG_BASE + 3)
  2463. #define iCFGREPOSITORY           (DBICFG_BASE + 210)
  2464.  
  2465. //--------------------------------------------------------------------------
  2466. // System Fields
  2467. //--------------------------------------------------------------------------
  2468. #define iCFGSYSVERSION           (DBICFG_BASE + 5)
  2469. #define iCFGSYSNETTYPE           (DBICFG_BASE + 6)
  2470. #define iCFGSYSNETDIR            (DBICFG_BASE + 7)
  2471. #define iCFGSYSLOCALSHARE        (DBICFG_BASE + 8)
  2472. #define iCFGSYSLANGDRV           (DBICFG_BASE + 9)
  2473. #define iCFGSYSLANGDRVDIR        (DBICFG_BASE + 10)
  2474. #define iCFGSYSMINBUF            (DBICFG_BASE + 11)
  2475. #define iCFGSYSMAXBUF            (DBICFG_BASE + 12)
  2476. #define iCFGSYSLOCKRETRY         (DBICFG_BASE + 13)
  2477. #define iCFGSYSFLAGS             (DBICFG_BASE + 14)
  2478. #define iCFGMAXFILEHANDLES       (DBICFG_BASE + 15)
  2479. #define iCFGSQLQRYMODE           (DBICFG_BASE + 16)
  2480. #define iCFGLOWMEMLIMIT          (DBICFG_BASE + 17)
  2481. #define iCFGSYSODBCCFGIMPORT     (DBICFG_BASE + 18)
  2482. #define iCFGSYSLOCALREPOSITORY   (DBICFG_BASE + 211)
  2483. //#define iCFGSYSCOMMONREPOSITORY  (DBICFG_BASE + 212)
  2484. #define iCFGSYSSHAREDMEMSIZE     (DBICFG_BASE + 250)
  2485. #define iCFGSYSSHAREDMEMLOCATION (DBICFG_BASE + 251)
  2486.  
  2487.  
  2488.  
  2489. //--------------------------------------------------------------------------
  2490. // Driver Fields
  2491. //--------------------------------------------------------------------------
  2492. #define iCFGDRVVERSION           (DBICFG_BASE + 20)
  2493. #define iCFGDRVTYPE              (DBICFG_BASE + 21)
  2494. #define iCFGDRVLANGDRIVER        (DBICFG_BASE + 22)
  2495. #define iCFGDRVFILLFACTOR        (DBICFG_BASE + 23)
  2496. #define iCFGDRVBLOCKSIZE         (DBICFG_BASE + 24)
  2497. #define iCFGDRVLOCKPROTOCOL      (DBICFG_BASE + 25)
  2498. #define iCFGDRVLEVEL             (DBICFG_BASE + 26)
  2499. #define iCFGDRVFLAGS             (DBICFG_BASE + 27)
  2500. #define iCFGDRVTRACEMODE         (DBICFG_BASE + 28)
  2501.  
  2502. //--------------------------------------------------------------------------
  2503. // Dbase Driver fields
  2504. //--------------------------------------------------------------------------
  2505. #define iCFGDRVMEMOBLOCKSIZE     (DBICFG_BASE + 30 )
  2506. #define iCFGDRVMDXBLOCKSIZE      (DBICFG_BASE + 31 )
  2507.  
  2508.  
  2509. //--------------------------------------------------------------------------
  2510. // Driver Nodes
  2511. //--------------------------------------------------------------------------
  2512. #define iCFGDRVINIT              (DBICFG_BASE + 40 )
  2513. #define iCFGDBCREATE             (DBICFG_BASE + 41 )
  2514. #define iCFGDBOPEN               (DBICFG_BASE + 42 )
  2515. #define iCFGTBLCREATE            (DBICFG_BASE + 43 )
  2516. #define iCFGTBLOPEN              (DBICFG_BASE + 44 )
  2517.  
  2518. //--------------------------------------------------------------------------
  2519. // Database Nodes
  2520. //--------------------------------------------------------------------------
  2521. #define iCFGDBINFO               (DBICFG_BASE + 50 )
  2522.  
  2523. //--------------------------------------------------------------------------
  2524. // Database fields
  2525. //--------------------------------------------------------------------------
  2526. #define iCFGDBTYPE               (DBICFG_BASE + 60)
  2527. #define iCFGDBPATH               (DBICFG_BASE + 61)
  2528. #define iCFGDBDEFAULTDRIVER      (DBICFG_BASE + 62)
  2529. #define iCFGDBENABLEBCD          (DBICFG_BASE + 63)
  2530.  
  2531. //--------------------------------------------------------------------------
  2532. // Others
  2533. //--------------------------------------------------------------------------
  2534. #define iCFGINIT                 (DBICFG_BASE + 70)
  2535. #define iTYPE                    (DBICFG_BASE + 71)
  2536. #define iCFGDBSTANDARD           (DBICFG_BASE + 72)
  2537. #define iCFGTRUE                 (DBICFG_BASE + 73)
  2538. #define iCFGFALSE                (DBICFG_BASE + 74)
  2539. #define iOPENMODE                (DBICFG_BASE + 75)
  2540. #define iREADWRITE               (DBICFG_BASE + 76)
  2541. #define iREADONLY                (DBICFG_BASE + 77)
  2542. #define iSHAREMODE               (DBICFG_BASE + 78)
  2543. #define iEXCLUSIVE               (DBICFG_BASE + 79)
  2544. #define iSHARED                  (DBICFG_BASE + 80)
  2545. #define iUSERNAME                (DBICFG_BASE + 81)
  2546. #define iSERVERNAME              (DBICFG_BASE + 82)
  2547. #define iDATABASENAME            (DBICFG_BASE + 83)
  2548. #define iSCHEMASIZE              (DBICFG_BASE + 84)
  2549. #define iCFGSTRICTINTEGRITY      (DBICFG_BASE + 85)
  2550. #define iTDSPACKETSIZE           (DBICFG_BASE + 86)
  2551. #define iORAINTEGER              (DBICFG_BASE + 87)
  2552.  
  2553. //--------------------------------------------------------------------------
  2554. // Repository Nodes
  2555. //--------------------------------------------------------------------------
  2556. #define iCFGDRDBNAME             (DBICFG_BASE + 213 )
  2557. #define iCFGDRTBLNAME            (DBICFG_BASE + 214 )
  2558. #define iCFGDRDESC               (DBICFG_BASE + 215 )
  2559. #define iCFGDRLANGDRIVER         (DBICFG_BASE + 212 )
  2560.  
  2561. //--------------------------------------------------------------------------
  2562. // System node:
  2563. //--------------------------------------------------------------------------
  2564. #define  iCFGFORMAT              (DBICFG_BASE + 130)
  2565.  
  2566. //--------------------------------------------------------------------------
  2567. // Format nodes:
  2568. //--------------------------------------------------------------------------
  2569. #define  iCFGDATE                (DBICFG_BASE + 131)
  2570. #define  iCFGTIME                (DBICFG_BASE + 132)
  2571. #define  iCFGNUMBER              (DBICFG_BASE + 133)
  2572.  
  2573. //--------------------------------------------------------------------------
  2574. // DATE and/or TIME fields:
  2575. //--------------------------------------------------------------------------
  2576. #define iCFGSEPARATOR            (DBICFG_BASE + 140)
  2577. #define iCFGMODE                 (DBICFG_BASE + 141)
  2578. #define iCFGFOURDIGITYEAR        (DBICFG_BASE + 142)
  2579. #define iCFGYEARBIASED           (DBICFG_BASE + 143)
  2580. #define iCFGLEADINGZEROM         (DBICFG_BASE + 144)
  2581. #define iCFGLEADINGZEROD         (DBICFG_BASE + 145)
  2582. #define iCFGTWELVEHOUR           (DBICFG_BASE + 146)
  2583. #define iCFGAMSTRING             (DBICFG_BASE + 147)
  2584. #define iCFGPMSTRING             (DBICFG_BASE + 148)
  2585. #define iCFGSECONDS              (DBICFG_BASE + 149)
  2586. #define iCFGMILSECONDS           (DBICFG_BASE + 150)
  2587.  
  2588. //--------------------------------------------------------------------------
  2589. // Number fields:
  2590. //--------------------------------------------------------------------------
  2591. #define iCFGDECIMALSEPARATOR     (DBICFG_BASE + 160)
  2592. #define iCFGTHOUSANDSEPARATOR    (DBICFG_BASE + 161)
  2593. #define iCFGDECIMALDIGITS        (DBICFG_BASE + 162)
  2594. #define iCFGLEADINGZERON         (DBICFG_BASE + 163)
  2595.  
  2596. #define iCFGDEFLANGDRV           (DBICFG_BASE + 165)
  2597. #define iCFGDBASEDEFLANGDRV      (DBICFG_BASE + 166)
  2598.  
  2599. //--------------------------------------------------------------------------
  2600. //Formats
  2601. //--------------------------------------------------------------------------
  2602. #define iCFGDEFSEPARATOR         (DBICFG_BASE + 170)
  2603. #define iCFGDEFMODE              (DBICFG_BASE + 171)
  2604. #define iCFGDEFFOURDIGITYEAR     (DBICFG_BASE + 172)
  2605. #define iCFGDEFYEARBIASED        (DBICFG_BASE + 173)
  2606. #define iCFGDEFLEADINGZEROM      (DBICFG_BASE + 174)
  2607. #define iCFGDEFLEADINGZEROD      (DBICFG_BASE + 175)
  2608. #define iCFGDEFTWELVEHOUR        (DBICFG_BASE + 176)
  2609. #define iCFGDEFAMSTRING          (DBICFG_BASE + 177)
  2610. #define iCFGDEFPMSTRING          (DBICFG_BASE + 178)
  2611. #define iCFGDEFSECONDS           (DBICFG_BASE + 179)
  2612. #define iCFGDEFMILSECONDS        (DBICFG_BASE + 180)
  2613. #define iCFGDEFDECIMALSEPARATOR  (DBICFG_BASE + 181)
  2614. #define iCFGDEFTHOUSANDSEPARATOR (DBICFG_BASE + 182)
  2615. #define iCFGDEFLEADINGZERO       (DBICFG_BASE + 183)
  2616.  
  2617. #define iCFGDEFVERSION             (DBICFG_BASE + 184)
  2618. #define iCFGDEFLOCALSHARE          (DBICFG_BASE + 185)
  2619. #define iCFGDEFMINBUFSIZE          (DBICFG_BASE + 186)
  2620. #define iCFGDEFMAXBUFSIZE          (DBICFG_BASE + 187)
  2621. #define iCFGDEFMAXFILEHANDLES      (DBICFG_BASE + 188)
  2622. #define iCFGDEFSYSFLAGS            (DBICFG_BASE + 189)
  2623. #define iCFGDEFLOWMEM              (DBICFG_BASE + 190)
  2624. #define iCFGDEFAUTOODBC            (DBICFG_BASE + 191)
  2625. #define iCFGDEFDEFDRV              (DBICFG_BASE + 192)
  2626.  
  2627. #define iCFGDEFDECIMALDIGITS       (DBICFG_BASE + 193)
  2628. #define iCFGDEFLEADINGZERON        (DBICFG_BASE + 194)
  2629.  
  2630. #define iCFGDEFPDXTYPE             (DBICFG_BASE + 195)
  2631. #define iCFGDEFPDXNETDIR           (DBICFG_BASE + 196)
  2632. #define iCFGDEFPDXLANGDRV          (DBICFG_BASE + 197)
  2633. #define iCFGDEFPDXLEVEL            (DBICFG_BASE + 198)
  2634. #define iCFGDEFPDXBLOCKSIZE        (DBICFG_BASE + 199)
  2635. #define iCFGDEFPDXFILLFACTOR       (DBICFG_BASE + 200)
  2636. #define iCFGDEFPDXSTRICTINTEGRTY   (DBICFG_BASE + 201)
  2637.  
  2638. #define iCFGDEFDBASETYPE           (DBICFG_BASE + 202)
  2639. #define iCFGDEFDBASELANGDRV        (DBICFG_BASE + 203)
  2640. #define iCFGDEFDBASELEVEL          (DBICFG_BASE + 204)
  2641. #define iCFGDEFDBASEMDXBLOCKSIZE   (DBICFG_BASE + 205)
  2642. #define iCFGDEFDBASEMEMOBLOCKSIZE  (DBICFG_BASE + 206)
  2643.  
  2644. #define iCFGAUTOODBC               (DBICFG_BASE + 207)
  2645. #define iCFGDEFDRV                 (DBICFG_BASE + 208)
  2646. #define iCFGENABLEBCD              (DBICFG_BASE + 209)
  2647. #define iCFGDEFSHAREDMEMSIZE       (DBICFG_BASE + 252)
  2648. #define iCFGDEFSHAREDMEMLOCATION   (DBICFG_BASE + 253)
  2649. #define iCFGDEFREPOSITORY          (DBICFG_BASE + 254)
  2650. #define iCFGDEFSQLQRYMODE          (DBICFG_BASE + 255)
  2651.  
  2652. // Categories
  2653. extern const char far SZCFGSYSTEM[];
  2654. extern const char far SZCFGDRIVER[];
  2655. extern const char far SZCFGDATABASE[];
  2656. extern const char far SZCFGREPOSITORY[];
  2657.  
  2658. // System Fields
  2659. extern const char far SZCFGSYSVERSION[];
  2660. extern const char far SZCFGSYSNETTYPE[];
  2661. extern const char far SZCFGSYSNETDIR[];
  2662. extern const char far SZCFGSYSLOCALSHARE[];
  2663. extern const char far SZCFGSYSLANGDRV[];
  2664. extern const char far SZCFGSYSLANGDRVDIR[];
  2665. extern const char far SZCFGSYSMINBUF[];
  2666. extern const char far SZCFGSYSMAXBUF[];
  2667. extern const char far SZCFGSYSLOCKRETRY[];
  2668. extern const char far SZCFGSYSFLAGS[];
  2669. extern const char far SZCFGMAXFILEHANDLES[];
  2670. extern const char far SZCFGSQLQRYMODE[];
  2671. extern const char far SZCFGLOWMEMLIMIT[];
  2672. extern const char far SZCFGSYSODBCCFGIMPORT[];
  2673. extern const char far SZCFGSYSLOCALREPOSITORY[];
  2674. //extern const char far SZCFGSYSCOMMONREPOSITORY[];
  2675. extern const char far SZCFGSYSSHAREDMEMSIZE[];
  2676. extern const char far SZCFGSYSSHAREDMEMLOCATION[];
  2677.  
  2678.  
  2679.  
  2680. // Driver Fields
  2681. extern const char far SZCFGDRVVERSION[];
  2682. extern const char far SZCFGDRVTYPE[];
  2683. extern const char far SZCFGDRVDLL[];
  2684. extern const char far SZCFGDRVDLL32[];
  2685. extern const char far SZCFGDRVFLAGS[];
  2686. extern const char far SZCFGDRVLANGDRIVER[];
  2687. extern const char far SZCFGDRVFILLFACTOR[];
  2688. extern const char far SZCFGDRVBLOCKSIZE[];
  2689. extern const char far SZCFGDRVLOCKPROTOCOL[];
  2690. extern const char far SZCFGDRVLEVEL[];
  2691. extern const char far SZCFGDRVTRACEMODE[];
  2692.  
  2693. // Dbase Driver fields
  2694. extern const char far SZCFGDRVMEMOBLOCKSIZE[];
  2695. extern const char far SZCFGDRVMDXBLOCKSIZE[];
  2696.  
  2697.  
  2698.  
  2699. // Driver Nodes
  2700. extern const char far SZCFGDRVINIT[];
  2701. extern const char far SZCFGDBCREATE[];
  2702. extern const char far SZCFGDBOPEN[];
  2703. extern const char far SZCFGTBLCREATE[];
  2704. extern const char far SZCFGTBLOPEN[];
  2705.  
  2706. // Database Nodes
  2707. extern const char far SZCFGDBINFO[];
  2708.  
  2709. // Database fields
  2710. extern const char far SZCFGDBTYPE[];
  2711. extern const char far SZCFGDBPATH[];
  2712. extern const char far SZCFGDBDEFAULTDRIVER[];
  2713. extern const char far SZCFGDBENABLEBCD[];
  2714.  
  2715. // Others
  2716. extern const char far SZCFGINIT[];
  2717. extern const char far SZTYPE[];
  2718. extern const char far SZCFGDBSTANDARD[];
  2719. extern const char far SZCFGTRUE[];
  2720. extern const char far SZCFGFALSE[];
  2721. extern const char far SZOPENMODE[];
  2722. extern const char far SZREADWRITE[];
  2723. extern const char far SZREADONLY[];
  2724. extern const char far SZSHAREMODE[];
  2725. extern const char far SZEXCLUSIVE[];
  2726. extern const char far SZSHARED[];
  2727. extern const char far SZUSERNAME[];
  2728. extern const char far SZSERVERNAME[];
  2729. extern const char far SZDATABASENAME[];
  2730. extern const char far SZSCHEMASIZE[];
  2731. extern const char far SZCFGSTRICTINTEGRITY[];
  2732. extern const char far SZTDSPACKETSIZE[];
  2733.  
  2734. // Repository fields
  2735. extern const char far SZCFGDRDBNAME[];
  2736. extern const char far SZCFGDRTBLNAME[];
  2737. extern const char far SZCFGDRDESC[];
  2738. extern const char far SZCFGDRLANGDRIVER[];
  2739.  
  2740.  
  2741. // SYSTEM DATE/TIME/NUMBER FORMATS
  2742. // SYSTEM nodes:
  2743. extern const char far  SZCFGFORMAT[];
  2744.  
  2745. // Format nodes:
  2746. extern const char far  SZCFGDATE[];
  2747. extern const char far  SZCFGTIME[];
  2748. extern const char far  SZCFGNUMBER[];
  2749.  
  2750. // DATE and/or TIME fields:
  2751. extern const char far SZCFGSEPARATOR[];
  2752. extern const char far SZCFGMODE[];
  2753. extern const char far SZCFGFOURDIGITYEAR[];
  2754. extern const char far SZCFGYEARBIASED[];
  2755. extern const char far SZCFGLEADINGZEROM[];
  2756. extern const char far SZCFGLEADINGZEROD[];
  2757. extern const char far SZCFGTWELVEHOUR[];
  2758. extern const char far SZCFGAMSTRING[];
  2759. extern const char far SZCFGPMSTRING[];
  2760. extern const char far SZCFGSECONDS[];
  2761. extern const char far SZCFGMILSECONDS[];
  2762.  
  2763. // Number fields:
  2764. extern const char far SZCFGDECIMALSEPARATOR[];
  2765. extern const char far SZCFGTHOUSANDSEPARATOR[];
  2766. extern const char far SZCFGDECIMALDIGITS[];
  2767. extern const char far SZCFGLEADINGZERON[];
  2768.  
  2769.  
  2770. extern const char far SZCFGDEFLANGDRV[];
  2771. extern const char far SZCFGDBASEDEFLANGDRV[];
  2772. extern const char far SZCFGDEFSEPARATOR[];
  2773. extern const char far SZCFGDEFMODE[];
  2774. extern const char far SZCFGDEFFOURDIGITYEAR[];
  2775. extern const char far SZCFGDEFYEARBIASED[];
  2776. extern const char far SZCFGDEFLEADINGZEROM[];
  2777. extern const char far SZCFGDEFLEADINGZEROD[];
  2778. extern const char far SZCFGDEFTWELVEHOUR[];
  2779. extern const char far SZCFGDEFAMSTRING[];
  2780. extern const char far SZCFGDEFPMSTRING[];
  2781. extern const char far SZCFGDEFSECONDS[];
  2782. extern const char far SZCFGDEFMILSECONDS[];
  2783. extern const char far SZCFGDEFDECIMALSEPARATOR[];
  2784. extern const char far SZCFGDEFTHOUSANDSEPARATOR[];
  2785. extern const char far SZCFGDEFLEADINGZERO[];
  2786.  
  2787.  
  2788. #endif  // NODBISYMBOLS
  2789.  
  2790. #ifndef NOCFGHLP
  2791. #define   CFGHLP_BASE              0x3B00
  2792.  
  2793. #define iCFGHLP_SYSNODE             (CFGHLP_BASE +1)
  2794. #define iCFGHLP_SYSINITNODE         (CFGHLP_BASE +2)
  2795. #define iCFGHLP_SYSVERSION          (CFGHLP_BASE +3)
  2796. #define iCFGHLP_SYSLOCALSHARE       (CFGHLP_BASE +4)
  2797. #define iCFGHLP_SYSMINBUFSIZE       (CFGHLP_BASE +5)
  2798. #define iCFGHLP_SYSMAXBUFSIZE       (CFGHLP_BASE +6)
  2799. #define iCFGHLP_SYSLANGDRIVER       (CFGHLP_BASE +7)
  2800. #define iCFGHLP_SYSNETTYPE          (CFGHLP_BASE +8)
  2801. #define iCFGHLP_SYSFLAGS            (CFGHLP_BASE +9)
  2802. #define iCFGHLP_SYSMAXFILE          (CFGHLP_BASE +10)
  2803. #define iCFGHLP_SYSLOWMEM           (CFGHLP_BASE +11)
  2804. #define iCFGHLP_SYSAUTOODBC         (CFGHLP_BASE +12)
  2805. #define iCFGHLP_SYSDEFDRV           (CFGHLP_BASE +13)
  2806. #define iCFGHLP_SYSSQLQRYMODE       (CFGHLP_BASE +14)
  2807. #define iCFGHLP_SYSSQLPASSTHRU      (CFGHLP_BASE +15)
  2808. #define iCFGHLP_SYSFORMATNODE       (CFGHLP_BASE +16)
  2809. #define iCFGHLP_DATENODE            (CFGHLP_BASE +17)
  2810. #define iCFGHLP_DATESEPARATOR       (CFGHLP_BASE +18)
  2811. #define iCFGHLP_DATEMODE            (CFGHLP_BASE +19)
  2812. #define iCFGHLP_DATEFOURDIGIT       (CFGHLP_BASE +20)
  2813. #define iCFGHLP_DATEYEARBIASED      (CFGHLP_BASE +21)
  2814. #define iCFGHLP_DATEZEROM           (CFGHLP_BASE +22)
  2815. #define iCFGHLP_DATEZEROD           (CFGHLP_BASE +23)
  2816. #define iCFGHLP_TIMENODE            (CFGHLP_BASE +24)
  2817. #define iCFGHLP_TIMETWELVEHOUR      (CFGHLP_BASE +25)
  2818. #define iCFGHLP_TIMEAMSTRING        (CFGHLP_BASE +26)
  2819. #define iCFGHLP_TIMEPMSTRING        (CFGHLP_BASE +27)
  2820. #define iCFGHLP_TIMESECONDS         (CFGHLP_BASE +28)
  2821. #define iCFGHLP_TIMEMILSEC          (CFGHLP_BASE +29)
  2822. #define iCFGHLP_NUMNODE             (CFGHLP_BASE +30)
  2823. #define iCFGHLP_NUMDECIMALSEPARATOR (CFGHLP_BASE +31)
  2824. #define iCFGHLP_NUMTHOUSANDSEPARATOR (CFGHLP_BASE +32)
  2825. #define iCFGHLP_NUMDECIMALDIGITS    (CFGHLP_BASE +33)
  2826. #define iCFGHLP_NUMZERON            (CFGHLP_BASE +34)
  2827. #define iCFGHLP_DRVNODE             (CFGHLP_BASE +35)
  2828. #define iCFGHLP_PDXNODE             (CFGHLP_BASE +36)
  2829. #define iCFGHLP_PDXINITNODE         (CFGHLP_BASE +37)
  2830. #define iCFGHLP_DRVTYPE             (CFGHLP_BASE +38)
  2831. #define iCFGHLP_PDXNETDIR           (CFGHLP_BASE +39)
  2832. #define iCFGHLP_PDXTBLNODE          (CFGHLP_BASE +40)
  2833. #define iCFGHLP_PDXLEVEL            (CFGHLP_BASE +41)
  2834. #define iCFGHLP_PDXBLOCKSIZE        (CFGHLP_BASE +42)
  2835. #define iCFGHLP_PDXFILLFACTOR       (CFGHLP_BASE +43)
  2836. #define iCFGHLP_PDXSTRICT           (CFGHLP_BASE +44)
  2837. #define iCFGHLP_DBNODE              (CFGHLP_BASE +45)
  2838. #define iCFGHLP_DBINITNODE          (CFGHLP_BASE +46)
  2839. #define iCFGHLP_DBVERSION           (CFGHLP_BASE +47)
  2840. #define iCFGHLP_DBTBLNODE           (CFGHLP_BASE +48)
  2841. #define iCFGHLP_DBLEVEL             (CFGHLP_BASE +49)
  2842. #define iCFGHLP_DBMDXBLOCKSIZE      (CFGHLP_BASE +50)
  2843. #define iCFGHLP_DBMEMOFILEBLOCKSIZE (CFGHLP_BASE +51)
  2844. #define iCFGHLP_INTNODE             (CFGHLP_BASE +52)
  2845. #define iCFGHLP_INTINITNODE         (CFGHLP_BASE +53)
  2846. #define iCFGHLP_INTVERSION          (CFGHLP_BASE +54)
  2847. #define iCFGHLP_SQLDLL              (CFGHLP_BASE +55)
  2848. #define iCFGHLP_SQLDLL32            (CFGHLP_BASE +56)
  2849. #define iCFGHLP_SQLDRIVERFLAGS      (CFGHLP_BASE +57)
  2850. #define iCFGHLP_INTDBNODE           (CFGHLP_BASE +58)
  2851. #define iCFGHLP_SQLSERVER           (CFGHLP_BASE +59)
  2852. #define iCFGHLP_SQLUSER             (CFGHLP_BASE +60)
  2853. #define iCFGHLP_SQLOPENMODE         (CFGHLP_BASE +61)
  2854. #define iCFGHLP_SQLSCHEMASIZE       (CFGHLP_BASE +62)
  2855. #define iCFGHLP_SQLSCHEMATIME       (CFGHLP_BASE +63)
  2856. #define iCFGHLP_SYBNODE             (CFGHLP_BASE +64)
  2857. #define iCFGHLP_SYBINITNODE         (CFGHLP_BASE +65)
  2858. #define iCFGHLP_SYBVERSION          (CFGHLP_BASE +66)
  2859. #define iCFGHLP_SQLCONNECT          (CFGHLP_BASE +67)
  2860. #define iCFGHLP_SQLTIMEOUT          (CFGHLP_BASE +68)
  2861. #define iCFGHLP_SYBDBNODE           (CFGHLP_BASE +69)
  2862. #define iCFGHLP_SQLDATABASE         (CFGHLP_BASE +70)
  2863. #define iCFGHLP_SQLBLOBEDIT         (CFGHLP_BASE +71)
  2864. #define iCFGHLP_SQLMAXQUERY         (CFGHLP_BASE +72)
  2865. #define iCFGHLP_ORANODE             (CFGHLP_BASE +73)
  2866. #define iCFGHLP_ORAINITNODE         (CFGHLP_BASE +74)
  2867. #define iCFGHLP_ORAVERSION          (CFGHLP_BASE +75)
  2868. #define iCFGHLP_SQLVENDOR           (CFGHLP_BASE +76)
  2869. #define iCFGHLP_ORADBNODE           (CFGHLP_BASE +77)
  2870. #define iCFGHLP_SQLNETPROTOCOL      (CFGHLP_BASE +78)
  2871. #define iCFGHLP_MSSNODE             (CFGHLP_BASE +79)
  2872. #define iCFGHLP_MSSINITNODE         (CFGHLP_BASE +80)
  2873. #define iCFGHLP_MSSVERSION          (CFGHLP_BASE +81)
  2874. #define iCFGHLP_MSSDBNODE           (CFGHLP_BASE +82)
  2875. #define iCFGHLP_INFNODE             (CFGHLP_BASE +83)
  2876. #define iCFGHLP_INFINITNODE         (CFGHLP_BASE +84)
  2877. #define iCFGHLP_INFVERSION          (CFGHLP_BASE +85)
  2878. #define iCFGHLP_INFDBNODE           (CFGHLP_BASE +86)
  2879. #define iCFGHLP_SQLLOCKMODE         (CFGHLP_BASE +87)
  2880. #define iCFGHLP_SQLTRACEMODE        (CFGHLP_BASE +88)
  2881. #define iCFGHLP_SQLMAXROWS          (CFGHLP_BASE +89)
  2882. #define iCFGHLP_SQLBATCHCOUNT       (CFGHLP_BASE +90)
  2883. #define iCFGHLP_SYSSHAREDMEMSIZ     (CFGHLP_BASE +91)
  2884. #define iCFGHLP_SYSSHAREDMEMLOC     (CFGHLP_BASE +92)
  2885. #define iCFGHLP_SYSDATAREP          (CFGHLP_BASE +93)
  2886. #define iCFGHLP_ALIASTYPE           (CFGHLP_BASE +94)
  2887. #define iCFGHLP_ALIASPATH           (CFGHLP_BASE +95)
  2888. #define iCFGHLP_ALIASDEFDRV         (CFGHLP_BASE +96)
  2889. #define iCFGHLP_ENABLESCHEMACACHE   (CFGHLP_BASE +97)
  2890. #define iCFGHLP_SCHEMACACHEDIR      (CFGHLP_BASE +98)
  2891. #define iCFGHLP_HOSTNAME            (CFGHLP_BASE +99)
  2892. #define iCFGHLP_APPLICATIONNAME     (CFGHLP_BASE +100)
  2893. #define iCFGHLP_NATIONALLANGNAME    (CFGHLP_BASE +101)
  2894. #define iCFGHLP_ALIASENABLEBCD      (CFGHLP_BASE +102)
  2895. #define iCFGHLP_TDSPACKETSIZE       (CFGHLP_BASE +103)
  2896. #define iCFGHLP_ORAINTEGER          (CFGHLP_BASE +104)
  2897. #define iCFGHLP_ORALISTSYNONYMS     (CFGHLP_BASE +105)
  2898.  
  2899. #endif // NOCFGHLP
  2900.  
  2901. #ifndef NODBIERRS
  2902. #define ErrCat(rslt)  ((UINT16)(rslt) >> 8)
  2903. #define ErrCode(rslt) ((UINT16)(rslt) & 0x00FF)
  2904.  
  2905.  
  2906. //============================================================================
  2907. //                            Error Categories
  2908. //============================================================================
  2909.  
  2910. #define ERRCAT_NONE                0   //  0   No error
  2911. #define ERRCAT_SYSTEM            0x21  //  33  System related (Fatal Error)
  2912. #define ERRCAT_NOTFOUND          0x22  //  34  Object of interest Not Found
  2913. #define ERRCAT_DATACORRUPT       0x23  //  35  Physical Data Corruption
  2914. #define ERRCAT_IO                0x24  //  36  I/O related error
  2915. #define ERRCAT_LIMIT             0x25  //  37  Resource or Limit error
  2916. #define ERRCAT_INTEGRITY         0x26  //  38  Integrity Violation
  2917. #define ERRCAT_INVALIDREQ        0x27  //  39  Invalid Request
  2918. #define ERRCAT_LOCKCONFLICT      0x28  //  40  Locking/Contention related
  2919. #define ERRCAT_SECURITY          0x29  //  41  Access Violation - Security related
  2920. #define ERRCAT_INVALIDCONTEXT    0x2A  //  42  Invalid context
  2921. #define ERRCAT_OS                0x2B  //  43  Os Error not handled by Idapi
  2922. #define ERRCAT_NETWORK           0x2C  //  44  Network related
  2923. #define ERRCAT_OPTPARAM          0x2D  //  45  Optional parameter related
  2924. #define ERRCAT_QUERY             0x2E  //  46  Query related
  2925. #define ERRCAT_VERSION           0x2F  //  47  Version Mismatch Category
  2926. #define ERRCAT_CAPABILITY        0x30  //  48  Capability not supported
  2927. #define ERRCAT_CONFIG            0x31  //  49  System configuration error
  2928. #define ERRCAT_WARNING           0x32  //  50
  2929. #define ERRCAT_OTHER             0x33  //  51  Miscellaneous
  2930. #define ERRCAT_COMPATIBILITY     0x34  //  52  Compatibility related
  2931. #define ERRCAT_REPOSITORY        0x35  //  53  Data Repository related
  2932.  
  2933. #define ERRCAT_DRIVER            0x3E  //  62  Driver related
  2934. #define ERRCAT_RC                0x3F  //  63  Internal
  2935.  
  2936.  
  2937. #define ERRBASE_NONE              0     // No error
  2938. #define ERRBASE_SYSTEM          0x2100  // System related (Fatal Error)
  2939. #define ERRBASE_NOTFOUND        0x2200  // Object of interest Not Found
  2940. #define ERRBASE_DATACORRUPT     0x2300  // Physical Data Corruption
  2941. #define ERRBASE_IO              0x2400  // I/O related error
  2942. #define ERRBASE_LIMIT           0x2500  // Resource or Limit error
  2943. #define ERRBASE_INTEGRITY       0x2600  // Integrity Violation
  2944. #define ERRBASE_INVALIDREQ      0x2700  // Invalid Request
  2945. #define ERRBASE_LOCKCONFLICT    0x2800  // Locking/Contention related
  2946. #define ERRBASE_SEC             0x2900  // Access Violation - Security related
  2947. #define ERRBASE_IC              0x2A00  // Invalid context
  2948. #define ERRBASE_OS              0x2B00  // Os Error not handled by Idapi
  2949. #define ERRBASE_NETWORK         0x2C00  // Network related
  2950. #define ERRBASE_OPTPARAM        0x2D00  // Optional Parameter related
  2951. #define ERRBASE_QUERY           0x2E00  // Query related
  2952. #define ERRBASE_VERSION         0x2F00  // Version Mismatch Category
  2953. #define ERRBASE_CAPABILITY      0x3000  // Capability not supported
  2954. #define ERRBASE_CONFIG          0x3100  // System configuration error
  2955. #define ERRBASE_WARNING         0x3200  //
  2956. #define ERRBASE_OTHER           0x3300  // Miscellaneous
  2957. #define ERRBASE_COMPATIBILITY   0x3400  // Compatibility related
  2958. #define ERRBASE_REPOSITORY      0x3500  // Data Repository related
  2959.  
  2960. #define ERRBASE_DRIVER          0x3E00  // Driver related
  2961. #define ERRBASE_RC              0x3F00  // Internal
  2962.  
  2963.  
  2964. //=============================================================================
  2965. //                           Error Codes By Category
  2966. //=============================================================================
  2967.  
  2968. // ERRCAT_NONE                  (0)
  2969. // ===========
  2970.  
  2971. #define ERRCODE_NONE             0
  2972.  
  2973. #define DBIERR_NONE                (ERRBASE_NONE + ERRCODE_NONE)
  2974.  
  2975. //  ERRCAT_SYSTEM
  2976. //  =============
  2977.  
  2978. #define  ERRCODE_SYSFILEOPEN     1   // Cannot open a system file
  2979. #define  ERRCODE_SYSFILEIO       2   // I/O error on a system file
  2980. #define  ERRCODE_SYSCORRUPT      3   // Data structure corruption
  2981. #define  ERRCODE_NOCONFIGFILE    4   // Cannot find config file
  2982. #define  ERRCODE_CFGCANNOTWRITE  5   // Cannot write config file (READONLY)
  2983. #define  ERRCODE_CFGMULTIFILE    6   // Initializing with different ini file
  2984. #define  ERRCODE_REENTERED       7   // System has been illegally re-entered
  2985. #define  ERRCODE_CANTFINDIDAPI   8   // Cannot locate IDAPIxx.DLL
  2986. #define  ERRCODE_CANTLOADIDAPI   9   // Cannot load IDAPIxx.DLL
  2987. #define  ERRCODE_CANTLOADLIBRARY 10  // Cannot load a service DLL
  2988. #define  ERRCODE_TEMPFILEERR     11  // Cannot create or open temporary file
  2989. #define  ERRCODE_MULTIPLEIDAPI   12  // Trying to load multiple IDAPIxx.DLL
  2990.  
  2991. #define  DBIERR_SYSFILEOPEN      (ERRBASE_SYSTEM + ERRCODE_SYSFILEOPEN)
  2992. #define  DBIERR_SYSFILEIO        (ERRBASE_SYSTEM + ERRCODE_SYSFILEIO)
  2993. #define  DBIERR_SYSCORRUPT       (ERRBASE_SYSTEM + ERRCODE_SYSCORRUPT)
  2994. #define  DBIERR_NOCONFIGFILE     (ERRBASE_SYSTEM + ERRCODE_NOCONFIGFILE)
  2995. #define  DBIERR_CFGCANNOTWRITE   (ERRBASE_SYSTEM + ERRCODE_CFGCANNOTWRITE)
  2996. #define  DBIERR_CFGMULTIFILE     (ERRBASE_SYSTEM + ERRCODE_CFGMULTIFILE)
  2997. #define  DBIERR_REENTERED        (ERRBASE_SYSTEM + ERRCODE_REENTERED)
  2998. #define  DBIERR_CANTFINDIDAPI    (ERRBASE_SYSTEM + ERRCODE_CANTFINDIDAPI)
  2999. #define  DBIERR_CANTLOADIDAPI    (ERRBASE_SYSTEM + ERRCODE_CANTLOADIDAPI)
  3000. #define  DBIERR_CANTLOADLIBRARY  (ERRBASE_SYSTEM + ERRCODE_CANTLOADLIBRARY)
  3001. #define  DBIERR_TEMPFILEERR      (ERRBASE_SYSTEM + ERRCODE_TEMPFILEERR)
  3002. #define  DBIERR_MULTIPLEIDAPI    (ERRBASE_SYSTEM + ERRCODE_MULTIPLEIDAPI)
  3003.  
  3004. #define  DBIERR_CANTFINDODAPI    DBIERR_CANTFINDIDAPI
  3005. #define  DBIERR_CANTLOADODAPI    DBIERR_CANTLOADIDAPI
  3006.  
  3007. //  ERRCAT_NOTFOUND
  3008. //  ===============
  3009.  
  3010. #define  ERRCODE_BOF             1        // Beginning of Virtual table
  3011. #define  ERRCODE_EOF             2        // End of Virtual table
  3012. #define  ERRCODE_RECMOVED        3        // Fly-away
  3013. #define  ERRCODE_KEYORRECDELETED 4        // Record Deleted/Key Modified
  3014. #define  ERRCODE_NOCURRREC       5        // No current record
  3015. #define  ERRCODE_RECNOTFOUND     6        // Record was not found
  3016. #define  ERRCODE_ENDOFBLOB       7        // End of Blob reached
  3017. #define  ERRCODE_OBJNOTFOUND     8        // Generic Not found
  3018. #define  ERRCODE_FMLMEMBERNOTFOUND 9      // Family member not found
  3019. #define  ERRCODE_BLOBFILEMISSING 10       // 0x0a Blob file for table is missing
  3020. #define  ERRCODE_LDNOTFOUND      11       // 0x0b Language driver not found
  3021.  
  3022. #define  DBIERR_BOF              (ERRBASE_NOTFOUND + ERRCODE_BOF)
  3023. #define  DBIERR_EOF              (ERRBASE_NOTFOUND + ERRCODE_EOF)
  3024. #define  DBIERR_RECMOVED         (ERRBASE_NOTFOUND + ERRCODE_RECMOVED)
  3025. #define  DBIERR_RECDELETED       (ERRBASE_NOTFOUND + ERRCODE_KEYORRECDELETED)
  3026. #define  DBIERR_KEYORRECDELETED  (ERRBASE_NOTFOUND + ERRCODE_KEYORRECDELETED)
  3027. #define  DBIERR_NOCURRREC        (ERRBASE_NOTFOUND + ERRCODE_NOCURRREC)
  3028. #define  DBIERR_RECNOTFOUND      (ERRBASE_NOTFOUND + ERRCODE_RECNOTFOUND)
  3029. #define  DBIERR_ENDOFBLOB        (ERRBASE_NOTFOUND + ERRCODE_ENDOFBLOB)
  3030. #define  DBIERR_OBJNOTFOUND      (ERRBASE_NOTFOUND + ERRCODE_OBJNOTFOUND)
  3031. #define  DBIERR_FMLMEMBERNOTFOUND (ERRBASE_NOTFOUND + ERRCODE_FMLMEMBERNOTFOUND)
  3032. #define  DBIERR_BLOBFILEMISSING (ERRBASE_NOTFOUND + ERRCODE_BLOBFILEMISSING)
  3033. #define  DBIERR_LDNOTFOUND (ERRBASE_NOTFOUND + ERRCODE_LDNOTFOUND)
  3034.  
  3035. // ERRCAT_DATACORRUPT
  3036. // ==================
  3037.  
  3038. #define  ERRCODE_HEADERCORRUPT   1        // Corrupt Header
  3039. #define  ERRCODE_FILECORRUPT     2        // File corrupt - other than header
  3040. #define  ERRCODE_MEMOCORRUPT     3        // Memo file corrupted
  3041. #define  ERRCODE_BMPCORRUPT      4        // BitMap is corrupt (Internal error)
  3042. #define  ERRCODE_INDEXCORRUPT    5        // Index is corrupt
  3043. #define  ERRCODE_CORRUPTLOCKFILE 6        // Corrupt lock file
  3044. #define  ERRCODE_FAMFILEINVALID  7        // Corrupt family file
  3045. #define  ERRCODE_VALFILECORRUPT  8        // Val file is missing or corrupt
  3046. #define  ERRCODE_FOREIGNINDEX    9        // Index is in a foreign format - import first
  3047.  
  3048.  
  3049. #define  DBIERR_HEADERCORRUPT    (ERRBASE_DATACORRUPT + ERRCODE_HEADERCORRUPT)
  3050. #define  DBIERR_FILECORRUPT      (ERRBASE_DATACORRUPT + ERRCODE_FILECORRUPT)
  3051. #define  DBIERR_MEMOCORRUPT      (ERRBASE_DATACORRUPT + ERRCODE_MEMOCORRUPT)
  3052. #define  DBIERR_BMPCORRUPT       (ERRBASE_DATACORRUPT + ERRCODE_BMPCORRUPT)
  3053. #define  DBIERR_INDEXCORRUPT     (ERRBASE_DATACORRUPT + ERRCODE_INDEXCORRUPT)
  3054. #define  DBIERR_CORRUPTLOCKFILE  (ERRBASE_DATACORRUPT + ERRCODE_CORRUPTLOCKFILE)
  3055. #define  DBIERR_FAMFILEINVALID   (ERRBASE_DATACORRUPT + ERRCODE_FAMFILEINVALID)
  3056. #define  DBIERR_VALFILECORRUPT   (ERRBASE_DATACORRUPT + ERRCODE_VALFILECORRUPT)
  3057. #define  DBIERR_FOREIGNINDEX     (ERRBASE_DATACORRUPT + ERRCODE_FOREIGNINDEX)
  3058.  
  3059.  
  3060. // ERRCAT_IO
  3061. // =========
  3062.  
  3063. #define  ERRCODE_READERR         1        // Read failure (not expected)
  3064. #define  ERRCODE_WRITEERR        2        // Write failure (not expected)
  3065. #define  ERRCODE_DIRNOACCESS     3        // No access to dir
  3066. #define  ERRCODE_FILEDELETEFAIL  4        // File delete failed
  3067. #define  ERRCODE_FILENOACCESS    5        // No access to file
  3068. #define  ERRCODE_ACCESSDISABLED  6        // Access to table disabled (previous error)
  3069.  
  3070. #define  DBIERR_READERR          (ERRBASE_IO + ERRCODE_READERR)
  3071. #define  DBIERR_WRITEERR         (ERRBASE_IO + ERRCODE_WRITEERR)
  3072. #define  DBIERR_DIRNOACCESS      (ERRBASE_IO + ERRCODE_DIRNOACCESS)
  3073. #define  DBIERR_FILEDELETEFAIL   (ERRBASE_IO + ERRCODE_FILEDELETEFAIL)
  3074. #define  DBIERR_FILENOACCESS     (ERRBASE_IO + ERRCODE_FILENOACCESS)
  3075. #define  DBIERR_ACCESSDISABLED   (ERRBASE_IO + ERRCODE_ACCESSDISABLED)
  3076.  
  3077. // ERRCAT_LIMIT
  3078. // ============
  3079.  
  3080. #define  ERRCODE_NOMEMORY        1        // Not enough Memory for this op
  3081. #define  ERRCODE_NOFILEHANDLES   2        // Not enough File handles
  3082. #define  ERRCODE_NODISKSPACE     3        // Not enough Disk space
  3083. #define  ERRCODE_NOTEMPTBLSPACE  4        // Temporary Table resource limit
  3084. #define  ERRCODE_RECTOOBIG       5        // Too big a record size for table
  3085. #define  ERRCODE_CURSORLIMIT     6        // Too many open cursors
  3086. #define  ERRCODE_TABLEFULL       7        // Table is full
  3087. #define  ERRCODE_WSSESLIMIT      8        // Too many sessions from this WS
  3088. #define  ERRCODE_SERNUMLIMIT     9        // Serial number limit (paradox)
  3089. #define  ERRCODE_INTERNALLIMIT   10       // 0x0a Some internal limit (see context)
  3090. #define  ERRCODE_OPENTBLLIMIT    11       // 0x0b Too many open tables
  3091. #define  ERRCODE_TBLCURSORLIMIT  12       // 0x0c Too many cursors per table
  3092. #define  ERRCODE_RECLOCKLIMIT    13       // 0x0d Too many record locks on table
  3093. #define  ERRCODE_CLIENTSLIMIT    14       // 0x0e Too many clients
  3094. #define  ERRCODE_INDEXLIMIT      15       // 0x0f Too many indexes (also in Table Create)
  3095. #define  ERRCODE_SESSIONSLIMIT   16       // 0x10 Too many sessions
  3096. #define  ERRCODE_DBLIMIT         17       // 0x11 Too many databases
  3097. #define  ERRCODE_PASSWORDLIMIT   18       // 0x12 Too many passwords
  3098. #define  ERRCODE_DRIVERLIMIT     19       // 0x13 Too many active drivers
  3099. #define  ERRCODE_FLDLIMIT        20       // 0x14 Too many Fields in Table Create
  3100. #define  ERRCODE_TBLLOCKLIMIT    21       // 0x15 Too many table locks
  3101. #define  ERRCODE_OPENBLOBLIMIT   22       // 0x16 Too many open blobs
  3102. #define  ERRCODE_LOCKFILELIMIT   23       // 0x17 Lock file has grown too big
  3103. #define  ERRCODE_OPENQRYLIMIT    24       // 0x18 Too many open queries
  3104. #define  ERRCODE_THREADLIMIT     25       // 0x19 Too many threads for client
  3105. #define  ERRCODE_BLOBLIMIT       26       // 0x1a Too many blobs
  3106. #define  ERRCODE_PDX50NAMELIMIT  27       // 0x1b Pathname is too long for a Paradox 5.0 or less table
  3107. #define  ERRCODE_ROWFETCHLIMIT   28       // 0x1c Row fetch limit
  3108. #define  ERRCODE_LONGNAMENOTALLOWED 29    // 0x1d Long name is not allowed for this tableversion
  3109.  
  3110. #define  DBIERR_NOMEMORY         (ERRBASE_LIMIT + ERRCODE_NOMEMORY)
  3111. #define  DBIERR_NOFILEHANDLES    (ERRBASE_LIMIT + ERRCODE_NOFILEHANDLES)
  3112. #define  DBIERR_NODISKSPACE      (ERRBASE_LIMIT + ERRCODE_NODISKSPACE)
  3113. #define  DBIERR_NOTEMPTBLSPACE   (ERRBASE_LIMIT + ERRCODE_NOTEMPTBLSPACE)
  3114. #define  DBIERR_RECTOOBIG        (ERRBASE_LIMIT + ERRCODE_RECTOOBIG)
  3115. #define  DBIERR_CURSORLIMIT      (ERRBASE_LIMIT + ERRCODE_CURSORLIMIT)
  3116. #define  DBIERR_TABLEFULL        (ERRBASE_LIMIT + ERRCODE_TABLEFULL)
  3117. #define  DBIERR_WSSESLIMIT       (ERRBASE_LIMIT + ERRCODE_WSSESLIMIT)
  3118. #define  DBIERR_SERNUMLIMIT      (ERRBASE_LIMIT + ERRCODE_SERNUMLIMIT)
  3119. #define  DBIERR_INTERNALLIMIT    (ERRBASE_LIMIT + ERRCODE_INTERNALLIMIT)
  3120. #define  DBIERR_OPENTBLLIMIT     (ERRBASE_LIMIT + ERRCODE_OPENTBLLIMIT)
  3121. #define  DBIERR_TBLCURSORLIMIT   (ERRBASE_LIMIT + ERRCODE_TBLCURSORLIMIT)
  3122. #define  DBIERR_RECLOCKLIMIT     (ERRBASE_LIMIT + ERRCODE_RECLOCKLIMIT)
  3123. #define  DBIERR_CLIENTSLIMIT     (ERRBASE_LIMIT + ERRCODE_CLIENTSLIMIT)
  3124. #define  DBIERR_INDEXLIMIT       (ERRBASE_LIMIT + ERRCODE_INDEXLIMIT)
  3125. #define  DBIERR_SESSIONSLIMIT    (ERRBASE_LIMIT + ERRCODE_SESSIONSLIMIT)
  3126. #define  DBIERR_DBLIMIT          (ERRBASE_LIMIT + ERRCODE_DBLIMIT)
  3127. #define  DBIERR_PASSWORDLIMIT    (ERRBASE_LIMIT + ERRCODE_PASSWORDLIMIT)
  3128. #define  DBIERR_DRIVERLIMIT      (ERRBASE_LIMIT + ERRCODE_DRIVERLIMIT)
  3129. #define  DBIERR_FLDLIMIT         (ERRBASE_LIMIT + ERRCODE_FLDLIMIT)
  3130. #define  DBIERR_TBLLOCKLIMIT     (ERRBASE_LIMIT + ERRCODE_TBLLOCKLIMIT)
  3131. #define  DBIERR_OPENBLOBLIMIT    (ERRBASE_LIMIT + ERRCODE_OPENBLOBLIMIT)
  3132. #define  DBIERR_LOCKFILELIMIT    (ERRBASE_LIMIT + ERRCODE_LOCKFILELIMIT)
  3133. #define  DBIERR_OPENQRYLIMIT     (ERRBASE_LIMIT + ERRCODE_OPENQRYLIMIT)
  3134. #define  DBIERR_THREADLIMIT      (ERRBASE_LIMIT + ERRCODE_THREADLIMIT)
  3135. #define  DBIERR_BLOBLIMIT        (ERRBASE_LIMIT + ERRCODE_BLOBLIMIT)
  3136. #define  DBIERR_PDX50NAMELIMIT   (ERRBASE_LIMIT + ERRCODE_PDX50NAMELIMIT)
  3137. #define  DBIERR_ROWFETCHLIMIT    (ERRBASE_LIMIT + ERRCODE_ROWFETCHLIMIT)
  3138. #define  DBIERR_LONGNAMENOTALLOWED (ERRBASE_LIMIT + ERRCODE_LONGNAMENOTALLOWED)
  3139.  
  3140.  
  3141. // ERRCAT_INTEGRITY
  3142. // ================
  3143.  
  3144. #define ERRCODE_KEYVIOL             1     // Key violation
  3145. #define ERRCODE_MINVALERR           2     // Min val check failed
  3146. #define ERRCODE_MAXVALERR           3     // Max val check failed
  3147. #define ERRCODE_REQDERR             4     // Field value required
  3148. #define ERRCODE_FORIEGNKEYERR       5     // Master record missing
  3149. #define ERRCODE_DETAILRECORDSEXIST  6     // Cannot MODIFY or DELETE this Master record
  3150. #define ERRCODE_MASTERTBLLEVEL      7     // Master Table Level is incorrect
  3151. #define ERRCODE_LOOKUPTABLEERR      8     // Field value out of lookup tbl range
  3152. #define ERRCODE_LOOKUPTBLOPENERR    9     // Lookup Table Open failed
  3153. #define ERRCODE_DETAILTBLOPENERR   10     // 0x0a Detail Table Open failed
  3154. #define ERRCODE_MASTERTBLOPENERR   11     // 0x0b Master Table Open failed
  3155. #define ERRCODE_FIELDISBLANK       12     // 0x0c Field is blank
  3156.  
  3157. #define ERRCODE_MASTEREXISTS       13     // 0x0d Master Table exists
  3158. #define ERRCODE_MASTERTBLOPEN      14     // 0x0e Master Table is open
  3159.  
  3160. #define ERRCODE_DETAILTABLESEXIST    15   // 0x0f Detail Tables exist ( cannot delete, rename ... )
  3161. #define ERRCODE_DETAILRECEXISTEMPTY  16   // 0x10 Cannot empty because details exist
  3162. #define ERRCODE_MASTERREFERENCEERR   17   // 0x11 Cannot modify while adding self referencing Referential Integrity
  3163. #define ERRCODE_DETAILTBLOPEN        18   // 0x12 Detail Table is opened
  3164. #define ERRCODE_DEPENDENTSMUSTBEEMPTY  19 // 0x13 Cannot make a master a detail of another table if its details are not empty !
  3165. #define ERRCODE_RINTREQINDEX         20   // 0x14 Ref. integrity fields must be indexed
  3166. #define ERRCODE_LINKEDTBLPROTECTED   21   // 0x15 Master Table is protected ( requires password to open)
  3167. #define ERRCODE_FIELDMULTILINKED     22   // 0x16 Field has more than one master
  3168.  
  3169.  
  3170. #define DBIERR_KEYVIOL             (ERRBASE_INTEGRITY + ERRCODE_KEYVIOL)
  3171. #define DBIERR_MINVALERR           (ERRBASE_INTEGRITY + ERRCODE_MINVALERR)
  3172. #define DBIERR_MAXVALERR           (ERRBASE_INTEGRITY + ERRCODE_MAXVALERR)
  3173. #define DBIERR_REQDERR             (ERRBASE_INTEGRITY + ERRCODE_REQDERR)
  3174. #define DBIERR_FORIEGNKEYERR       (ERRBASE_INTEGRITY + ERRCODE_FORIEGNKEYERR)
  3175. #define DBIERR_DETAILRECORDSEXIST  (ERRBASE_INTEGRITY + ERRCODE_DETAILRECORDSEXIST)
  3176. #define DBIERR_MASTERTBLLEVEL      (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLLEVEL)
  3177. #define DBIERR_LOOKUPTABLEERR      (ERRBASE_INTEGRITY + ERRCODE_LOOKUPTABLEERR)
  3178. #define DBIERR_LOOKUPTBLOPENERR    (ERRBASE_INTEGRITY + ERRCODE_LOOKUPTBLOPENERR)
  3179. #define DBIERR_DETAILTBLOPENERR    (ERRBASE_INTEGRITY + ERRCODE_DETAILTBLOPENERR)
  3180. #define DBIERR_MASTERTBLOPENERR    (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLOPENERR)
  3181. #define DBIERR_FIELDISBLANK        (ERRBASE_INTEGRITY + ERRCODE_FIELDISBLANK)
  3182. #define DBIERR_MASTEREXISTS        (ERRBASE_INTEGRITY + ERRCODE_MASTEREXISTS)
  3183. #define DBIERR_MASTERTBLOPEN       (ERRBASE_INTEGRITY + ERRCODE_MASTERTBLOPEN)
  3184. #define DBIERR_DETAILTABLESEXIST   (ERRBASE_INTEGRITY + ERRCODE_DETAILTABLESEXIST)
  3185. #define DBIERR_DETAILRECEXISTEMPTY (ERRBASE_INTEGRITY + ERRCODE_DETAILRECEXISTEMPTY)
  3186. #define DBIERR_MASTERREFERENCEERR  (ERRBASE_INTEGRITY + ERRCODE_MASTERREFERENCEERR)
  3187. #define DBIERR_DETAILTBLOPEN       (ERRBASE_INTEGRITY + ERRCODE_DETAILTBLOPEN)
  3188. #define DBIERR_DEPENDENTSMUSTBEEMPTY  (ERRBASE_INTEGRITY + ERRCODE_DEPENDENTSMUSTBEEMPTY)
  3189. #define DBIERR_RINTREQINDEX        (ERRBASE_INTEGRITY + ERRCODE_RINTREQINDEX)
  3190. #define DBIERR_LINKEDTBLPROTECTED  (ERRBASE_INTEGRITY + ERRCODE_LINKEDTBLPROTECTED)
  3191. #define DBIERR_FIELDMULTILINKED    (ERRBASE_INTEGRITY + ERRCODE_FIELDMULTILINKED)
  3192.  
  3193.  
  3194.  
  3195. // ERRCAT_INVALIDREQ
  3196. // =================
  3197.  
  3198. #define  ERRCODE_OUTOFRANGE           1     // Number out of range (e.g field no)
  3199. #define  ERRCODE_INVALIDPARAM         2     // Generic invalid parameter
  3200. #define  ERRCODE_INVALIDFILENAME      3     // Invalid file name
  3201. #define  ERRCODE_NOSUCHFILE           4     // No such file
  3202. #define  ERRCODE_INVALIDOPTION        5     // Invalid option for a parameter
  3203. #define  ERRCODE_INVALIDHNDL          6     // Invalid handle to the function
  3204. #define  ERRCODE_UNKNOWNTBLTYPE       7     // Table type given not known
  3205. #define  ERRCODE_UNKNOWNFILE          8     // Dont know how to open file
  3206. #define  ERRCODE_PRIMARYKEYREDEFINE   9     // Cannot redefine primary key
  3207. #define  ERRCODE_INVALIDRINTDESCNUM   10    // 0x0a Cannot change this RINTDesc
  3208. #define  ERRCODE_KEYFLDTYPEMISMATCH   11    // 0x0b Foreign & Primary Key Mismatch
  3209. #define  ERRCODE_INVALIDMODIFYREQUEST 12    // 0x0c Invalid modify request
  3210. #define  ERRCODE_NOSUCHINDEX          13    // 0x0d Index does not exist
  3211. #define  ERRCODE_INVALIDBLOBOFFSET    14    // 0x0e Invalid Offset into the Blob
  3212. #define  ERRCODE_INVALIDDESCNUM       15    // 0x0f Invalid descriptor number
  3213. #define  ERRCODE_INVALIDFLDTYPE       16    // 0x10 Invalid field type
  3214. #define  ERRCODE_INVALIDFLDDESC       17    // 0x11 Invalid field descriptor
  3215. #define  ERRCODE_INVALIDFLDXFORM      18    // 0x12 Invalid field transform
  3216. #define  ERRCODE_INVALIDRECSTRUCT     19    // 0x13 Invalid record structure
  3217. #define  ERRCODE_INVALIDDESC          20    // 0x14 Generic: invalid descriptor
  3218. #define  ERRCODE_INVALIDINDEXSTRUCT   21    // 0x15 Invalid array of indexes descriptors
  3219. #define  ERRCODE_INVALIDVCHKSTRUCT    22    // 0x16 Invalid array of  val. check descriptors
  3220. #define  ERRCODE_INVALIDRINTSTRUCT    23    // 0x17 Invalid array of ref. integrity descriptors
  3221. #define  ERRCODE_INVALIDRESTRTBLORDER 24    // 0x18 Invalid ordering of tables during restructure
  3222. #define  ERRCODE_NAMENOTUNIQUE        25    // 0x19 Name not unique in this context
  3223. #define  ERRCODE_INDEXNAMEREQUIRED    26    // 0x1a Index name required
  3224. #define  ERRCODE_INVALIDSESHANDLE     27    // 0x1b Invalid ses handle
  3225. #define  ERRCODE_INVALIDRESTROP       28    // 0x1c Invalid restructure operation
  3226. #define  ERRCODE_UNKNOWNDRIVER        29    // 0x1d Driver not known to system
  3227. #define  ERRCODE_UNKNOWNDB            30    // 0x1e Unknown db
  3228. #define  ERRCODE_INVALIDPASSWORD      31    // 0x1f Invalid password given
  3229. #define  ERRCODE_NOCALLBACK           32    // 0x20 No callback function
  3230. #define  ERRCODE_INVALIDCALLBACKBUFLEN 33   // 0x21 Invalid callback buffer length
  3231. #define  ERRCODE_INVALIDDIR            34   // 0x22 Invalid directory
  3232. #define  ERRCODE_INVALIDXLATION        35   // 0x23 Translate Error - Translate DID NOT happen
  3233. #define  ERRCODE_DIFFERENTTABLES       36   // 0x24 Cannot Set Cursor of one Table to another
  3234. #define  ERRCODE_INVALIDBOOKMARK       37   // 0x25 Bookmarks does not match table, etc.
  3235. #define  ERRCODE_INVALIDINDEXNAME      38   // 0x26 Index/Tag Name is invalid
  3236. #define  ERRCODE_INVALIDIDXDESC        39   // 0x27 Invalid index descriptor
  3237. #define  ERRCODE_NOSUCHTABLE           40   // 0x28 No such table
  3238. #define  ERRCODE_USECOUNT              41   // 0x29 Table has too many users
  3239. #define  ERRCODE_INVALIDKEY            42   // 0x2a Key does not pass filter condition
  3240. #define  ERRCODE_INDEXEXISTS           43   // 0x2b Index already exists
  3241. #define  ERRCODE_INDEXOPEN             44   // 0x2c Index is open
  3242. #define  ERRCODE_INVALIDBLOBLEN        45   // 0x2d Invalid Blob Length
  3243. #define  ERRCODE_INVALIDBLOBHANDLE     46   // 0x2e Invalid Blob handle (in record buffer)
  3244. #define  ERRCODE_TABLEOPEN             47   // 0x2f Table is open
  3245. #define  ERRCODE_NEEDRESTRUCTURE       48   // 0x30 Need to do (hard) restructure
  3246. #define  ERRCODE_INVALIDMODE           49   // 0x31 Invalid mode
  3247. #define  ERRCODE_CANNOTCLOSE            50  // 0x32 Cannot close index
  3248. #define  ERRCODE_ACTIVEINDEX            51  // 0x33 Index is being used to order tbl
  3249. #define  ERRCODE_INVALIDUSRPASS         52  // 0x34 Bad user name or password
  3250. #define  ERRCODE_MULTILEVELCASCADE      53  // 0x35 Multi level Cascade not supported
  3251. #define  ERRCODE_INVALIDFIELDNAME       54  // 0x36 Invalid field name
  3252. #define  ERRCODE_INVALIDTABLENAME       55  // 0x37 Invalid table name
  3253. #define  ERRCODE_INVALIDLINKEXPR        56  // 0x38 Invalid linked cursor expression
  3254. #define  ERRCODE_NAMERESERVED           57  // 0x39 Name is reserved
  3255. #define  ERRCODE_INVALIDFILEEXTN        58  // 0x3a Invalid file extention
  3256. #define  ERRCODE_INVALIDLANGDRV         59  // 0x3b Invalid language driver
  3257. #define  ERRCODE_ALIASNOTOPEN           60  // 0x3c Requested alias in not open
  3258. #define  ERRCODE_INCOMPATRECSTRUCTS     61  // 0x3d Incompatible record structures
  3259. #define  ERRCODE_RESERVEDDOSNAME        62  // 0x3e Reserved dos name
  3260. #define  ERRCODE_DESTMUSTBEINDEXED      63  // 0x3f Destination must be indexed
  3261. #define  ERRCODE_INVALIDINDEXTYPE       64  // 0x40 Invalid index type
  3262. #define  ERRCODE_LANGDRVMISMATCH        65  // 0x41 Language driver of table and index do not match
  3263. #define  ERRCODE_NOSUCHFILTER           66  // 0x42 Filter handle is invalid
  3264. #define  ERRCODE_INVALIDFILTER          67  // 0x43 Invalid filter
  3265.  
  3266. #define  ERRCODE_INVALIDTABLECREATE     68  // 0x44 Bad table create request (exact prob unknown)
  3267. #define  ERRCODE_INVALIDTABLEDELETE     69  // 0x45 Bad table delete request (exact prob unknown)
  3268. #define  ERRCODE_INVALIDINDEXCREATE     70  // 0x46 Bad index create request (exact prob unknown)
  3269. #define  ERRCODE_INVALIDINDEXDELETE     71  // 0x47 Bad index delete request (exact prob unknown)
  3270. #define  ERRCODE_INVALIDTABLE           72  // 0x48 Invalid table name specified
  3271. #define  ERRCODE_MULTIRESULTS           73  // 0X49 Multi results
  3272. #define  ERRCODE_INVALIDTIME            74  // 0X4A Multi results
  3273. #define  ERRCODE_INVALIDDATE            75  // 0X4B Multi results
  3274. #define  ERRCODE_INVALIDTIMESTAMP       76  // 0X4C Multi results
  3275. #define  ERRCODE_DIFFERENTPATH          77  // 0X4d Tables in different paths
  3276. #define  ERRCODE_MISMATCHARGS           78  // 0x4e MisMatch in the # of arguments
  3277. #define  ERRCODE_FUNCTIONNOTFOUND       79  // 0x4f Loaderlib cant find a func in the DLL (bad version?)
  3278. #define  ERRCODE_MUSTUSEBASEORDER       80  // 0x50 Must use baseorder for this operation
  3279. #define  ERRCODE_INVALIDPROCEDURENAME   81  // 0x51 Invalid procedure name
  3280. #define  ERRCODE_INVALIDFLDMAP          82  // 0x52 invalid field map
  3281.  
  3282.  
  3283. #define  DBIERR_OUTOFRANGE           (ERRBASE_INVALIDREQ + ERRCODE_OUTOFRANGE)
  3284. #define  DBIERR_INVALIDPARAM         (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPARAM)
  3285. #define  DBIERR_INVALIDFILENAME      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILENAME)
  3286. #define  DBIERR_NOSUCHFILE           (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHFILE)
  3287. #define  DBIERR_INVALIDOPTION        (ERRBASE_INVALIDREQ + ERRCODE_INVALIDOPTION)
  3288. #define  DBIERR_INVALIDHNDL          (ERRBASE_INVALIDREQ + ERRCODE_INVALIDHNDL)
  3289. #define  DBIERR_UNKNOWNTBLTYPE       (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNTBLTYPE)
  3290. #define  DBIERR_UNKNOWNFILE          (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNFILE)
  3291. #define  DBIERR_PRIMARYKEYREDEFINE   (ERRBASE_INVALIDREQ + ERRCODE_PRIMARYKEYREDEFINE)
  3292. #define  DBIERR_INVALIDRINTDESCNUM   (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRINTDESCNUM)
  3293. #define  DBIERR_KEYFLDTYPEMISMATCH   (ERRBASE_INVALIDREQ + ERRCODE_KEYFLDTYPEMISMATCH)
  3294. #define  DBIERR_INVALIDMODIFYREQUEST (ERRBASE_INVALIDREQ + ERRCODE_INVALIDMODIFYREQUEST)
  3295. #define  DBIERR_NOSUCHINDEX          (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHINDEX)
  3296. #define  DBIERR_INVALIDBLOBOFFSET    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBOFFSET)
  3297. #define  DBIERR_INVALIDDESCNUM       (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDESCNUM)
  3298. #define  DBIERR_INVALIDFLDTYPE       (ERRBASE_INVALIDREQ +  ERRCODE_INVALIDFLDTYPE)
  3299. #define  DBIERR_INVALIDFLDDESC       (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDDESC)
  3300. #define  DBIERR_INVALIDFLDXFORM      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDXFORM)
  3301. #define  DBIERR_INVALIDRECSTRUCT     (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRECSTRUCT)
  3302. #define  DBIERR_INVALIDDESC          (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDESC)
  3303. #define  DBIERR_INVALIDINDEXSTRUCT   (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXSTRUCT)
  3304. #define  DBIERR_INVALIDVCHKSTRUCT    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDVCHKSTRUCT)
  3305. #define  DBIERR_INVALIDRINTSTRUCT    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRINTSTRUCT)
  3306. #define  DBIERR_INVALIDRESTRTBLORDER (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRESTRTBLORDER)
  3307. #define  DBIERR_NAMENOTUNIQUE        (ERRBASE_INVALIDREQ + ERRCODE_NAMENOTUNIQUE)
  3308. #define  DBIERR_INDEXNAMEREQUIRED    (ERRBASE_INVALIDREQ + ERRCODE_INDEXNAMEREQUIRED)
  3309. #define  DBIERR_INVALIDSESHANDLE     (ERRBASE_INVALIDREQ + ERRCODE_INVALIDSESHANDLE)
  3310. #define  DBIERR_INVALIDRESTROP       (ERRBASE_INVALIDREQ + ERRCODE_INVALIDRESTROP)
  3311. #define  DBIERR_UNKNOWNDRIVER        (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNDRIVER)
  3312. #define  DBIERR_UNKNOWNDB            (ERRBASE_INVALIDREQ + ERRCODE_UNKNOWNDB)
  3313. #define  DBIERR_INVALIDPASSWORD      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPASSWORD)
  3314. #define  DBIERR_NOCALLBACK           (ERRBASE_INVALIDREQ + ERRCODE_NOCALLBACK)
  3315. #define  DBIERR_INVALIDCALLBACKBUFLEN \
  3316.   (ERRBASE_INVALIDREQ + ERRCODE_INVALIDCALLBACKBUFLEN )
  3317. #define  DBIERR_INVALIDDIR          (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDIR)
  3318. #define  DBIERR_INVALIDXLATION      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDXLATION)
  3319. #define  DBIERR_DIFFERENTTABLES     (ERRBASE_INVALIDREQ + ERRCODE_DIFFERENTTABLES)
  3320. #define  DBIERR_INVALIDBOOKMARK     (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBOOKMARK)
  3321. #define  DBIERR_INVALIDINDEXNAME    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXNAME)
  3322. #define  DBIERR_INVALIDIDXDESC      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDIDXDESC)
  3323. #define  DBIERR_NOSUCHTABLE         (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHTABLE)
  3324. #define  DBIERR_USECOUNT            (ERRBASE_INVALIDREQ + ERRCODE_USECOUNT)
  3325. #define  DBIERR_INVALIDKEY          (ERRBASE_INVALIDREQ + ERRCODE_INVALIDKEY)
  3326. #define  DBIERR_INDEXEXISTS         (ERRBASE_INVALIDREQ + ERRCODE_INDEXEXISTS)
  3327. #define  DBIERR_INDEXOPEN           (ERRBASE_INVALIDREQ + ERRCODE_INDEXOPEN)
  3328. #define  DBIERR_INVALIDBLOBLEN      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBLEN)
  3329. #define  DBIERR_INVALIDBLOBHANDLE   (ERRBASE_INVALIDREQ + ERRCODE_INVALIDBLOBHANDLE)
  3330. #define  DBIERR_TABLEOPEN           (ERRBASE_INVALIDREQ + ERRCODE_TABLEOPEN)
  3331. #define  DBIERR_NEEDRESTRUCTURE     (ERRBASE_INVALIDREQ + ERRCODE_NEEDRESTRUCTURE)
  3332. #define  DBIERR_INVALIDMODE         (ERRBASE_INVALIDREQ + ERRCODE_INVALIDMODE)
  3333. #define  DBIERR_CANNOTCLOSE         (ERRBASE_INVALIDREQ + ERRCODE_CANNOTCLOSE)
  3334. #define  DBIERR_ACTIVEINDEX         (ERRBASE_INVALIDREQ + ERRCODE_ACTIVEINDEX)
  3335. #define  DBIERR_INVALIDUSRPASS      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDUSRPASS)
  3336. #define  DBIERR_MULTILEVELCASCADE   (ERRBASE_INVALIDREQ + ERRCODE_MULTILEVELCASCADE)
  3337. #define  DBIERR_INVALIDFIELDNAME    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFIELDNAME)
  3338. #define  DBIERR_INVALIDTABLENAME    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLENAME)
  3339. #define  DBIERR_INVALIDLINKEXPR     (ERRBASE_INVALIDREQ + ERRCODE_INVALIDLINKEXPR)
  3340. #define  DBIERR_NAMERESERVED        (ERRBASE_INVALIDREQ + ERRCODE_NAMERESERVED)
  3341. #define  DBIERR_INVALIDFILEEXTN     (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILEEXTN)
  3342. #define  DBIERR_INVALIDLANGDRV      (ERRBASE_INVALIDREQ + ERRCODE_INVALIDLANGDRV)
  3343. #define  DBIERR_ALIASNOTOPEN        (ERRBASE_INVALIDREQ + ERRCODE_ALIASNOTOPEN)
  3344. #define  DBIERR_INCOMPATRECSTRUCTS  (ERRBASE_INVALIDREQ + ERRCODE_INCOMPATRECSTRUCTS)
  3345. #define  DBIERR_RESERVEDOSNAME      (ERRBASE_INVALIDREQ + ERRCODE_RESERVEDDOSNAME)
  3346. #define  DBIERR_DESTMUSTBEINDEXED   (ERRBASE_INVALIDREQ + ERRCODE_DESTMUSTBEINDEXED)
  3347. #define  DBIERR_INVALIDINDEXTYPE    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXTYPE)
  3348. #define  DBIERR_LANGDRVMISMATCH     (ERRBASE_INVALIDREQ + ERRCODE_LANGDRVMISMATCH)
  3349. #define  DBIERR_NOSUCHFILTER        (ERRBASE_INVALIDREQ + ERRCODE_NOSUCHFILTER)
  3350. #define  DBIERR_INVALIDFILTER       (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFILTER)
  3351. #define  DBIERR_INVALIDTABLECREATE  (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLECREATE)
  3352. #define  DBIERR_INVALIDTABLEDELETE  (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLEDELETE)
  3353. #define  DBIERR_INVALIDINDEXCREATE  (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXCREATE)
  3354. #define  DBIERR_INVALIDINDEXDELETE  (ERRBASE_INVALIDREQ + ERRCODE_INVALIDINDEXDELETE)
  3355. #define  DBIERR_INVALIDTABLE        (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTABLE)
  3356. #define  DBIERR_MULTIRESULTS        (ERRBASE_INVALIDREQ + ERRCODE_MULTIRESULTS)
  3357. #define  DBIERR_INVALIDTIME         (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTIME)
  3358. #define  DBIERR_INVALIDDATE         (ERRBASE_INVALIDREQ + ERRCODE_INVALIDDATE)
  3359. #define  DBIERR_INVALIDTIMESTAMP    (ERRBASE_INVALIDREQ + ERRCODE_INVALIDTIMESTAMP)
  3360. #define  DBIERR_DIFFERENTPATH       (ERRBASE_INVALIDREQ + ERRCODE_DIFFERENTPATH)
  3361. #define  DBIERR_MISMATCHARGS        (ERRBASE_INVALIDREQ + ERRCODE_MISMATCHARGS)
  3362. #define  DBIERR_FUNCTIONNOTFOUND    (ERRBASE_INVALIDREQ + ERRCODE_FUNCTIONNOTFOUND)
  3363. #define  DBIERR_MUSTUSEBASEORDER    (ERRBASE_INVALIDREQ + ERRCODE_MUSTUSEBASEORDER)
  3364. #define  DBIERR_INVALIDPROCEDURENAME (ERRBASE_INVALIDREQ + ERRCODE_INVALIDPROCEDURENAME)
  3365. #define  DBIERR_INVALIDFLDMAP       (ERRBASE_INVALIDREQ + ERRCODE_INVALIDFLDMAP)
  3366.  
  3367. // ERRCAT_LOCKCONFLICT
  3368. // ===================
  3369.  
  3370. #define ERRCODE_LOCKED           1
  3371. #define ERRCODE_UNLOCKFAILED     2
  3372. #define ERRCODE_FILEBUSY         3
  3373. #define ERRCODE_DIRBUSY          4
  3374. #define ERRCODE_FILELOCKED       5
  3375. #define ERRCODE_DIRLOCKED        6
  3376. #define ERRCODE_ALREADYLOCKED    7
  3377. #define ERRCODE_NOTLOCKED        8
  3378. #define ERRCODE_LOCKTIMEOUT      9
  3379. #define ERRCODE_GROUPLOCKED      10    // 0x0a
  3380. #define ERRCODE_LOSTTBLLOCK      11    // 0x0b
  3381. #define ERRCODE_LOSTEXCLACCESS   12    // 0x0c
  3382. #define ERRCODE_NEEDEXCLACCESS   13    // 0x0d
  3383. #define ERRCODE_RECGROUPCONFLICT 14    // 0x0e
  3384. #define ERRCODE_DEADLOCK         15
  3385. #define ERRCODE_ACTIVETRAN       16
  3386. #define ERRCODE_NOACTIVETRAN     17
  3387. #define ERRCODE_RECLOCKFAILED    18
  3388. #define ERRCODE_OPTRECLOCKFAILED 19
  3389. #define ERRCODE_OPTRECLOCKRECDEL 20
  3390. #define ERRCODE_LOCKEDRECS       21
  3391. #define ERRCODE_NEEDWRITELOCK    22
  3392.  
  3393. #define DBIERR_LOCKED            (ERRBASE_LOCKCONFLICT + ERRCODE_LOCKED)
  3394. #define DBIERR_UNLOCKFAILED      (ERRBASE_LOCKCONFLICT + ERRCODE_UNLOCKFAILED)
  3395. #define DBIERR_FILEBUSY          (ERRBASE_LOCKCONFLICT + ERRCODE_FILEBUSY)
  3396. #define DBIERR_DIRBUSY           (ERRBASE_LOCKCONFLICT + ERRCODE_DIRBUSY)
  3397. #define DBIERR_FILELOCKED        (ERRBASE_LOCKCONFLICT + ERRCODE_FILELOCKED)
  3398. #define DBIERR_DIRLOCKED         (ERRBASE_LOCKCONFLICT + ERRCODE_DIRLOCKED)
  3399. #define DBIERR_ALREADYLOCKED     (ERRBASE_LOCKCONFLICT + ERRCODE_ALREADYLOCKED)
  3400. #define DBIERR_NOTLOCKED         (ERRBASE_LOCKCONFLICT + ERRCODE_NOTLOCKED)
  3401. #define DBIERR_LOCKTIMEOUT       (ERRBASE_LOCKCONFLICT + ERRCODE_LOCKTIMEOUT)
  3402. #define DBIERR_GROUPLOCKED       (ERRBASE_LOCKCONFLICT + ERRCODE_GROUPLOCKED)
  3403. #define DBIERR_LOSTTBLLOCK       (ERRBASE_LOCKCONFLICT + ERRCODE_LOSTTBLLOCK)
  3404. #define DBIERR_LOSTEXCLACCESS    (ERRBASE_LOCKCONFLICT + ERRCODE_LOSTEXCLACCESS)
  3405. #define DBIERR_NEEDEXCLACCESS    (ERRBASE_LOCKCONFLICT  + ERRCODE_NEEDEXCLACCESS)
  3406. #define DBIERR_RECGROUPCONFLICT  (ERRBASE_LOCKCONFLICT + ERRCODE_RECGROUPCONFLICT)
  3407. #define DBIERR_DEADLOCK          (ERRBASE_LOCKCONFLICT + ERRCODE_DEADLOCK)
  3408. #define DBIERR_ACTIVETRAN        (ERRBASE_LOCKCONFLICT + ERRCODE_ACTIVETRAN)
  3409. #define DBIERR_NOACTIVETRAN      (ERRBASE_LOCKCONFLICT + ERRCODE_NOACTIVETRAN)
  3410. #define DBIERR_RECLOCKFAILED     (ERRBASE_LOCKCONFLICT + ERRCODE_RECLOCKFAILED)
  3411. #define DBIERR_OPTRECLOCKFAILED  (ERRBASE_LOCKCONFLICT + ERRCODE_OPTRECLOCKFAILED)
  3412. #define DBIERR_OPTRECLOCKRECDEL  (ERRBASE_LOCKCONFLICT + ERRCODE_OPTRECLOCKRECDEL)
  3413.  
  3414. // ERRCAT_SECURITY
  3415. // ===============
  3416.  
  3417. #define ERRCODE_NOTSUFFFIELDRIGHTS   1        // Not sufficient field  rights for operation
  3418. #define ERRCODE_NOTSUFFTABLERIGHTS   2        // Not sufficient table  rights for operation
  3419. #define ERRCODE_NOTSUFFFAMILYRIGHTS  3        // Not sufficient family rights for operation
  3420. #define ERRCODE_READONLYDIR          4        // Is a read-only directory
  3421. #define ERRCODE_READONLYDB           5        // Database is read-only
  3422. #define ERRCODE_READONLYFLD          6        // Trying to modify read-only field
  3423. #define ERRCODE_TBLENCRYPTED         7        // Table is encrypted (dBASE only)
  3424. #define ERRCODE_NOTSUFFSQLRIGHTS     8        // Not sufficient sql rights for operation
  3425.  
  3426.  
  3427. #define DBIERR_NOTSUFFFIELDRIGHTS  (ERRBASE_SEC + ERRCODE_NOTSUFFFIELDRIGHTS)
  3428. #define DBIERR_NOTSUFFTABLERIGHTS  (ERRBASE_SEC + ERRCODE_NOTSUFFTABLERIGHTS)
  3429. #define DBIERR_NOTSUFFFAMILYRIGHTS (ERRBASE_SEC + ERRCODE_NOTSUFFFAMILYRIGHTS)
  3430. #define DBIERR_READONLYDIR         (ERRBASE_SEC + ERRCODE_READONLYDIR)
  3431. #define DBIERR_READONLYDB          (ERRBASE_SEC + ERRCODE_READONLYDB)
  3432. #define DBIERR_READONLYFLD         (ERRBASE_SEC + ERRCODE_READONLYFLD)
  3433. #define DBIERR_TBLENCRYPTED        (ERRBASE_SEC + ERRCODE_TBLENCRYPTED)
  3434. #define DBIERR_NOTSUFFSQLRIGHTS    (ERRBASE_SEC + ERRCODE_NOTSUFFSQLRIGHTS)
  3435.  
  3436.  
  3437. // ERRCAT_INVALIDCONTEXT
  3438. // =====================
  3439.  
  3440. #define ERRCODE_NOTABLOB         1        // Field is not a blob
  3441. #define ERRCODE_BLOBOPENED       2        // Blob already opened
  3442. #define ERRCODE_BLOBNOTOPENED    3        // Blob not opened
  3443. #define ERRCODE_NA               4        // Operation not applicable
  3444. #define ERRCODE_NOTINDEXED       5        // Table is not indexed
  3445. #define ERRCODE_NOTINITIALIZED   6        // Engine not initialized
  3446. #define ERRCODE_MULTIPLEINIT     7        // Attempt to re-initialize engine
  3447. #define ERRCODE_NOTSAMESESSION   8        // Attempt to mix objs from diff ses
  3448. #define ERRCODE_PDXDRIVERNOTACTIVE 9      // Paradox driver not active
  3449. #define ERRCODE_DRIVERNOTLOADED  10       // 0x0a Driver not loaded
  3450. #define ERRCODE_TABLEREADONLY    11       // 0x0b Table is read only
  3451. #define ERRCODE_NOASSOCINDEX     12       // 0x0c No index associated with the cursor
  3452. #define ERRCODE_HASOPENCURSORS   13       // 0x0d Has open cursors
  3453. #define ERRCODE_NOTABLESUPPORT   14       // 0x0e Op cannot be done on this table
  3454. #define ERRCODE_INDEXREADONLY    15       // 0x0f Index is read only
  3455. #define ERRCODE_NOUNIQUERECS     16       // 0x10 Records are not unique
  3456. #define ERRCODE_NOTCURSESSION    17       // 0x11 Not the current/active session
  3457. #define ERRCODE_INVALIDKEYWORD   18       // 0x12 Invalid use of keyword.
  3458. #define ERRCODE_CONNECTINUSE     19       // 0x13 Connection in use
  3459. #define ERRCODE_CONNECTNOTSHARED 20       // 0x14 Passthru SQL connection not share
  3460.  
  3461.  
  3462. #define DBIERR_NOTABLOB           (ERRBASE_IC + ERRCODE_NOTABLOB)
  3463. #define DBIERR_BLOBOPENED         (ERRBASE_IC + ERRCODE_BLOBOPENED)
  3464. #define DBIERR_BLOBNOTOPENED      (ERRBASE_IC + ERRCODE_BLOBNOTOPENED)
  3465. #define DBIERR_NA                 (ERRBASE_IC + ERRCODE_NA)
  3466. #define DBIERR_NOTINDEXED         (ERRBASE_IC + ERRCODE_NOTINDEXED)
  3467. #define DBIERR_NOTINITIALIZED     (ERRBASE_IC + ERRCODE_NOTINITIALIZED)
  3468. #define DBIERR_MULTIPLEINIT       (ERRBASE_IC + ERRCODE_MULTIPLEINIT)
  3469. #define DBIERR_NOTSAMESESSION     (ERRBASE_IC + ERRCODE_NOTSAMESESSION)
  3470. #define DBIERR_PDXDRIVERNOTACTIVE (ERRBASE_IC + ERRCODE_PDXDRIVERNOTACTIVE)
  3471. #define DBIERR_DRIVERNOTLOADED    (ERRBASE_IC + ERRCODE_DRIVERNOTLOADED)
  3472. #define DBIERR_TABLEREADONLY      (ERRBASE_IC + ERRCODE_TABLEREADONLY)
  3473. #define DBIERR_NOASSOCINDEX       (ERRBASE_IC + ERRCODE_NOASSOCINDEX)
  3474. #define DBIERR_HASOPENCURSORS     (ERRBASE_IC + ERRCODE_HASOPENCURSORS)
  3475. #define DBIERR_NOTABLESUPPORT     (ERRBASE_IC + ERRCODE_NOTABLESUPPORT)
  3476. #define DBIERR_INDEXREADONLY      (ERRBASE_IC + ERRCODE_INDEXREADONLY)
  3477. #define DBIERR_NOUNIQUERECS       (ERRBASE_IC + ERRCODE_NOUNIQUERECS)
  3478. #define DBIERR_NOTCURSESSION      (ERRBASE_IC + ERRCODE_NOTCURSESSION)
  3479. #define DBIERR_INVALIDKEYWORD     (ERRBASE_IC + ERRCODE_INVALIDKEYWORD)
  3480. #define DBIERR_CONNECTINUSE       (ERRBASE_IC + ERRCODE_CONNECTINUSE)
  3481. #define DBIERR_CONNECTNOTSHARED   (ERRBASE_IC + ERRCODE_CONNECTNOTSHARED)
  3482.  
  3483.  
  3484. // ERRCAT_OS
  3485. // =========
  3486. // DOS extended errors:
  3487.  
  3488. #define ERRCODE_OSEINVFNC     1        // Invalid function number
  3489. #define ERRCODE_OSENOENT      2        // No such file or directory
  3490. #define ERRCODE_OSENOPATH     3        // Path not found
  3491. #define ERRCODE_OSEMFILE      4        // Too many open files
  3492. #define ERRCODE_OSEACCES      5        // Permission denied
  3493. #define ERRCODE_OSEBADF       6        // Bad file number
  3494. #define ERRCODE_OSECONTR      7        // Memory blocks destroyed
  3495. #define ERRCODE_OSENOMEM      8        // Not enough core
  3496. #define ERRCODE_OSEINVMEM     9        // Invalid memory block address
  3497. #define ERRCODE_OSEINVENV     10       // 0x0a Invalid environment
  3498. #define ERRCODE_OSEINVFMT     11       // 0x0b Invalid format
  3499. #define ERRCODE_OSEINVACC     12       // 0x0c Invalid access code
  3500. #define ERRCODE_OSEINVDAT     13       // 0x0d Invalid data
  3501. #define ERRCODE_OSENODEV      15       // 0x0f No such device
  3502. #define ERRCODE_OSECURDIR     16       // 0x10 Attempt to remove curdir
  3503. #define ERRCODE_OSENOTSAM     17       // 0x11 Not same device
  3504. #define ERRCODE_OSENMFILE     18       // 0x12 No more files
  3505. #define ERRCODE_OSEINVAL      19       // 0x13 Invalid argument
  3506. #define ERRCODE_OSE2BIG       20       // 0x14 Arg list too long
  3507. #define ERRCODE_OSENOEXEC     21       // 0x15 Exec format error
  3508. #define ERRCODE_OSEXDEV       22       // 0x16 Cross-device link
  3509. #define ERRCODE_OSEDOM        33       // 0x21 Math argument
  3510. #define ERRCODE_OSERANGE      34       // 0x22 Result to large
  3511. #define ERRCODE_OSEEXIST      35       // 0x23 File already exists
  3512. #define ERRCODE_OSUNKNOWN     39       // 0x27 Unkown | illegal error from rtl
  3513.  
  3514. #define ERRCODE_OSSHAREVIOL   50       // 0x32 Share viol, ext. err 0x20
  3515. #define ERRCODE_OSLOCKVIOL    51       // 0x33 Lock viol, ext. err 0x21
  3516. #define ERRCODE_OSINT24FAIL   52       // 0x34 INT24 called
  3517. #define ERRCODE_OSDRIVENOTREADY   53   // 0x35 Drive not ready
  3518.  
  3519.  
  3520.  
  3521. // OTHER Os errors:
  3522. // 1. idapi errors
  3523. // 2. errors from non-dos systems ( i.e. NOVELL )
  3524.  
  3525. #define ERRCODE_NOTEXACT          100       // 0x64 Not exact read/write
  3526. #define ERRCODE_OSNETERR          101       // 0x65 Generic network error
  3527. #define ERRCODE_OSUNKNOWNSRVERR   102       // 0x66 Error from file server
  3528. #define ERRCODE_SERVERNOMEMORY    103       // 0x67 Server out of memory
  3529. #define ERRCODE_OSALREADYLOCKED   104       // 0x68 Record already locked (by you)
  3530. #define ERRCODE_OSNOTLOCKED       105       // 0x69 Record not locked
  3531. #define ERRCODE_NOSERVERSW        106       // 0x6a Server software not running the workstation/server
  3532.  
  3533.  
  3534.  
  3535. #define   DBIERR_OSEINVFNC       ( ERRBASE_OS + ERRCODE_OSEINVFNC )
  3536. #define   DBIERR_OSENOENT        ( ERRBASE_OS + ERRCODE_OSENOENT )
  3537. #define   DBIERR_OSENOPATH       ( ERRBASE_OS + ERRCODE_OSENOPATH )
  3538. #define   DBIERR_OSEMFILE        ( ERRBASE_OS + ERRCODE_OSEMFILE )
  3539. #define   DBIERR_OSEACCES        ( ERRBASE_OS + ERRCODE_OSEACCES )
  3540. #define   DBIERR_OSEBADF         ( ERRBASE_OS + ERRCODE_OSEBADF )
  3541. #define   DBIERR_OSECONTR        ( ERRBASE_OS + ERRCODE_OSECONTR )
  3542. #define   DBIERR_OSENOMEM        ( ERRBASE_OS + ERRCODE_OSENOMEM )
  3543. #define   DBIERR_OSEINVMEM       ( ERRBASE_OS + ERRCODE_OSEINVMEM )
  3544. #define   DBIERR_OSEINVENV       ( ERRBASE_OS + ERRCODE_OSEINVENV )
  3545. #define   DBIERR_OSEINVFMT       ( ERRBASE_OS + ERRCODE_OSEINVFMT )
  3546. #define   DBIERR_OSEINVACC       ( ERRBASE_OS + ERRCODE_OSEINVACC )
  3547. #define   DBIERR_OSEINVDAT       ( ERRBASE_OS + ERRCODE_OSEINVDAT )
  3548. #define   DBIERR_OSENODEV        ( ERRBASE_OS + ERRCODE_OSENODEV )
  3549. #define   DBIERR_OSECURDIR       ( ERRBASE_OS + ERRCODE_OSECURDIR )
  3550. #define   DBIERR_OSENOTSAM       ( ERRBASE_OS + ERRCODE_OSENOTSAM )
  3551. #define   DBIERR_OSENMFILE       ( ERRBASE_OS + ERRCODE_OSENMFILE )
  3552. #define   DBIERR_OSEINVAL        ( ERRBASE_OS + ERRCODE_OSEINVAL )
  3553. #define   DBIERR_OSE2BIG         ( ERRBASE_OS + ERRCODE_OSE2BIG )
  3554. #define   DBIERR_OSENOEXEC       ( ERRBASE_OS + ERRCODE_OSENOEXEC )
  3555. #define   DBIERR_OSEXDEV         ( ERRBASE_OS + ERRCODE_OSEXDEV )
  3556. #define   DBIERR_OSEDOM          ( ERRBASE_OS + ERRCODE_OSEDOM )
  3557. #define   DBIERR_OSERANGE        ( ERRBASE_OS + ERRCODE_OSERANGE )
  3558. #define   DBIERR_OSEEXIST        ( ERRBASE_OS + ERRCODE_OSEEXIST )
  3559. #define   DBIERR_OSUNKNOWN       ( ERRBASE_OS + ERRCODE_OSUNKNOWN )
  3560. #define   DBIERR_OSSHAREVIOL     ( ERRBASE_OS + ERRCODE_OSSHAREVIOL )
  3561. #define   DBIERR_OSLOCKVIOL      ( ERRBASE_OS + ERRCODE_OSLOCKVIOL )
  3562. #define   DBIERR_OSNETERR        ( ERRBASE_OS + ERRCODE_OSNETERR )
  3563. #define   DBIERR_OSINT24FAIL     ( ERRBASE_OS + ERRCODE_OSINT24FAIL )
  3564. #define   DBIERR_OSDRIVENOTREADY ( ERRBASE_OS + ERRCODE_OSDRIVENOTREADY )
  3565.  
  3566.  
  3567. #define   DBIERR_NOTEXACT        ( ERRBASE_OS + ERRCODE_NOTEXACT )
  3568. #define   DBIERR_OSUNKNOWNSRVERR ( ERRBASE_OS + ERRCODE_OSUNKNOWNSRVERR )
  3569. #define   DBIERR_SERVERNOMEMORY  ( ERRBASE_OS + ERRCODE_SERVERNOMEMORY )
  3570. #define   DBIERR_OSALREADYLOCKED ( ERRBASE_OS + ERRCODE_OSALREADYLOCKED )
  3571. #define   DBIERR_OSNOTLOCKED     ( ERRBASE_OS + ERRCODE_OSNOTLOCKED )
  3572. #define   DBIERR_NOSERVERSW      ( ERRBASE_OS + ERRCODE_NOSERVERSW)
  3573.  
  3574. // ERRCAT_NETWORK
  3575. // ==============
  3576.  
  3577. #define ERRCODE_NETINITERR       1        // Net init failed
  3578. #define ERRCODE_NETUSERLIMIT     2        // Net user limit exceeded
  3579. #define ERRCODE_NETFILEVERSION   3        // Wrong net file version
  3580. #define ERRCODE_NETFILELOCKED    4        // Not able to lock net file
  3581. #define ERRCODE_DIRNOTPRIVATE    5        //
  3582. #define ERRCODE_NETMULTIPLE      6        // Multiple net files in use
  3583. #define ERRCODE_NETUNKNOWN       7        // Unknown net error
  3584. #define ERRCODE_SHAREDFILE       8        // Cannot access a shared file
  3585. #define ERRCODE_SHARENOTLOADED   9        // Share not loaded
  3586. #define ERRCODE_NOTONANETWORK    10       // 0x0a Not an Network
  3587. #define ERRCODE_SQLCOMMLOST      11       // 0x0b Lost Communication with SQL server
  3588. #define ERRCODE_SERVERCOMMLOST   12       // 0x0c Lost Communication with IDAPI server
  3589. #define ERRCODE_SQLSERVERNOTFOUND 13      // 0x0d SQL Server not found
  3590. #define ERRCODE_SERVERNOTFOUND   14       // 0x0e SQL Server not found
  3591.  
  3592. #define DBIERR_NETINITERR        (ERRBASE_NETWORK + ERRCODE_NETINITERR)
  3593. #define DBIERR_NETUSERLIMIT      (ERRBASE_NETWORK + ERRCODE_NETUSERLIMIT)
  3594. #define DBIERR_NETFILEVERSION    (ERRBASE_NETWORK + ERRCODE_NETFILEVERSION)
  3595. #define DBIERR_NETFILELOCKED     (ERRBASE_NETWORK + ERRCODE_NETFILELOCKED)
  3596. #define DBIERR_DIRNOTPRIVATE     (ERRBASE_NETWORK + ERRCODE_DIRNOTPRIVATE)
  3597. #define DBIERR_NETMULTIPLE       (ERRBASE_NETWORK + ERRCODE_NETMULTIPLE)
  3598. #define DBIERR_NETUNKNOWN        (ERRBASE_NETWORK + ERRCODE_NETUNKNOWN)
  3599. #define DBIERR_SHAREDFILE        (ERRBASE_NETWORK + ERRCODE_SHAREDFILE)
  3600. #define DBIERR_SHARENOTLOADED    (ERRBASE_NETWORK + ERRCODE_SHARENOTLOADED)
  3601. #define DBIERR_NOTONANETWORK     (ERRBASE_NETWORK + ERRCODE_NOTONANETWORK)
  3602. #define DBIERR_SQLCOMMLOST       (ERRBASE_NETWORK + ERRCODE_SQLCOMMLOST)
  3603. #define DBIERR_SERVERCOMMLOST    (ERRBASE_NETWORK + ERRCODE_SERVERCOMMLOST)
  3604. #define DBIERR_SQLSERVERNOTFOUND (ERRBASE_NETWORK + ERRCODE_SQLSERVERNOTFOUND)
  3605. #define DBIERR_SERVERNOTFOUND    (ERRBASE_NETWORK + ERRCODE_SERVERNOTFOUND)
  3606.  
  3607. // ERRCAT_DRIVER
  3608. // =============
  3609.  
  3610. #define ERRCODE_WRONGDRVNAME    1       // Wrong driver name
  3611. #define ERRCODE_WRONGSYSVER     2       // Wrong system version
  3612. #define ERRCODE_WRONGDRVVER     3       // Wrong driver version
  3613. #define ERRCODE_WRONGDRVTYPE    4       // Wrong driver type
  3614. #define ERRCODE_CANNOTLOADDRV   5       // Can not load driver
  3615. #define ERRCODE_CANNOTLOADLDDRV   6     // Can not load language driver
  3616. #define ERRCODE_VENDINITFAIL    7       // Vendor init failure
  3617. #define ERRCODE_DRIVERRESTRICTED  8     // Client not enabled for this driver
  3618.  
  3619.  
  3620. #define DBIERR_WRONGDRVNAME     (ERRBASE_DRIVER + ERRCODE_WRONGDRVNAME)
  3621. #define DBIERR_WRONGSYSVER      (ERRBASE_DRIVER + ERRCODE_WRONGSYSVER)
  3622. #define DBIERR_WRONGDRVVER      (ERRBASE_DRIVER + ERRCODE_WRONGDRVVER)
  3623. #define DBIERR_WRONGDRVTYPE     (ERRBASE_DRIVER + ERRCODE_WRONGDRVTYPE)
  3624. #define DBIERR_CANNOTLOADDRV    (ERRBASE_DRIVER + ERRCODE_CANNOTLOADDRV)
  3625. #define DBIERR_CANNOTLOADLDDRV  (ERRBASE_DRIVER + ERRCODE_CANNOTLOADLDDRV)
  3626. #define DBIERR_VENDINITFAIL     (ERRBASE_DRIVER + ERRCODE_VENDINITFAIL)
  3627. #define DBIERR_DRIVERRESTRICTED (ERRBASE_DRIVER + ERRCODE_DRIVERRESTRICTED)
  3628.  
  3629.  
  3630. // ERRCAT_QUERY
  3631. // ============
  3632.  
  3633.  
  3634.  
  3635. #define DBICODE_AMBJOASY       1 // obsolete
  3636. #define DBICODE_AMBJOSYM       2 // obsolete
  3637. #define DBICODE_AMBOUTEX       3
  3638. #define DBICODE_AMBOUTPR       4 // obsolete
  3639. #define DBICODE_AMBSYMAS       5 // obsolete
  3640. #define DBICODE_ASETOPER       6
  3641. #define DBICODE_AVENUMDA       7
  3642. #define DBICODE_BADEXPR1       8
  3643. #define DBICODE_BADFLDOR       9
  3644. #define DBICODE_BADVNAME      10                              // 0x0a
  3645. #define DBICODE_BITMAPER      11                              // 0x0b
  3646. #define DBICODE_CALCBADR      12                              // 0x0c
  3647. #define DBICODE_CALCTYPE      13                              // 0x0d
  3648. #define DBICODE_CHGTO1TI      14                              // 0x0e
  3649. #define DBICODE_CHGTOCHG      15                              // 0x0f
  3650. #define DBICODE_CHGTOEXP      16                              // 0x10
  3651. #define DBICODE_CHGTOINS      17                              // 0x11
  3652. #define DBICODE_CHGTONEW      18                              // 0x12
  3653. #define DBICODE_CHGTOVAL      19                              // 0x13
  3654. #define DBICODE_CHKMRKFI      20                              // 0x14
  3655. #define DBICODE_CHNAMBIG      21                              // 0x15
  3656. #define DBICODE_CHUNKERR      22                              // 0x16
  3657. #define DBICODE_COLUM255      23                              // 0x17
  3658. #define DBICODE_CONAFTAS      24                              // 0x18
  3659. #define DBICODE_DEL1TIME      25                              // 0x19
  3660. #define DBICODE_DELAMBIG      26                              // 0x1a
  3661. #define DBICODE_DELFRDEL      27                              // 0x1b
  3662. #define DBICODE_EGFLDTYP      28                              // 0x1c
  3663. #define DBICODE_EXAMINOR      29                              // 0x1d
  3664. #define DBICODE_EXPRTYPS      30                              // 0x1e
  3665. #define DBICODE_EXTRACOM      31                              // 0x1f
  3666. #define DBICODE_EXTRAORO      32                              // 0x20
  3667. #define DBICODE_EXTRAQRO      33                              // 0x21
  3668. #define DBICODE_FIND1ATT      34                              // 0x22
  3669. #define DBICODE_FINDANST      35                              // 0x23
  3670. #define DBICODE_GRPNOSET      36                              // 0x24
  3671. #define DBICODE_GRPSTROW      37                              // 0x25
  3672. #define DBICODE_IDFINLCO      38                              // 0x26
  3673. #define DBICODE_IDFPERLI      39                              // 0x27
  3674. #define DBICODE_INANEXPR      40                              // 0x28
  3675. #define DBICODE_INS1TIME      41                              // 0x29
  3676. #define DBICODE_INSAMBIG      42                              // 0x2a
  3677. #define DBICODE_INSDELCH      43                              // 0x2b
  3678. #define DBICODE_INSEXPRR      44                              // 0x2c
  3679. #define DBICODE_INSTOINS      45                              // 0x2d
  3680. #define DBICODE_ISARRAY       46                              // 0x2e
  3681. #define DBICODE_LABELERR      47                              // 0x2f
  3682. #define DBICODE_LINKCALC      48                              // 0x30
  3683. #define DBICODE_LNGVNAME      49                              // 0x31
  3684. #define DBICODE_LONGQURY      50                              // 0x32
  3685. #define DBICODE_MEMVPROC      51                              // 0x33
  3686. #define DBICODE_MISNGCOM      52                              // 0x34
  3687. #define DBICODE_MISNGRPA      53                              // 0x35
  3688. #define DBICODE_MISSRTQU      54                              // 0x36
  3689. #define DBICODE_NAMTWICE      55                              // 0x37
  3690. #define DBICODE_NOCHKMAR      56                              // 0x38
  3691. #define DBICODE_NODEFOCC      57                              // 0x39
  3692. #define DBICODE_NOGROUPS      58                              // 0x3a
  3693. #define DBICODE_NONSENSE      59                              // 0x3b
  3694. #define DBICODE_NOPATTER      60                              // 0x3c
  3695. #define DBICODE_NOSUCHDA      61                              // 0x3d
  3696. #define DBICODE_NOVALUE       62                              // 0x3e
  3697. #define DBICODE_ONLYCONS      63                              // 0x3f
  3698. #define DBICODE_ONLYSETR      64                              // 0x40
  3699. #define DBICODE_OUTSENS1      65                              // 0x41
  3700. #define DBICODE_OUTTWIC1      66                              // 0x42
  3701. #define DBICODE_PAROWCNT      67                              // 0x43
  3702. #define DBICODE_PERSEPAR      68                              // 0x44
  3703. #define DBICODE_PROCPLSW      69                              // 0x45
  3704. #define DBICODE_PWINSRTS      70                              // 0x46
  3705. #define DBICODE_PWMODRTS      71                              // 0x47
  3706. #define DBICODE_QBEFLDFOUND   72                              // 0x48
  3707. #define DBICODE_QBENOFENCE    73                              // 0x49
  3708. #define DBICODE_QBENOFENCET   74                              // 0x4a
  3709. #define DBICODE_QBENOHEADERT  75                              // 0x4b
  3710. #define DBICODE_QBENOTAB      76                              // 0x4c
  3711. #define DBICODE_QBENUMCOLS    77                              // 0x4d
  3712. #define DBICODE_QBEOPENTAB    78                              // 0x4e
  3713. #define DBICODE_QBETWICE      79                              // 0x4f
  3714. #define DBICODE_QRYNOANSWER   80                              // 0x50
  3715. #define DBICODE_QRYNOTPREP    81                              // 0x51
  3716. #define DBICODE_QUAINDEL      82                              // 0x52
  3717. #define DBICODE_QUAININS      83                              // 0x53
  3718. #define DBICODE_RAGININS      84                              // 0x54
  3719. #define DBICODE_RAGINSET      85                              // 0x55
  3720. #define DBICODE_ROWUSERR      86                              // 0x56
  3721. #define DBICODE_SETEXPEC      87                              // 0x57
  3722. #define DBICODE_SETVAMB1      88                              // 0x58
  3723. #define DBICODE_SETVBAD1      89                              // 0x59
  3724. #define DBICODE_SETVDEF1      90                              // 0x5a
  3725. #define DBICODE_SUMNUMBE      91                              // 0x5b
  3726. #define DBICODE_TBLISWP3      92                              // 0x5c
  3727. #define DBICODE_TOKENNOT      93                              // 0x5d
  3728. #define DBICODE_TWOOUTR1      94                              // 0x5e
  3729. #define DBICODE_TYPEMISM      95                              // 0x5f
  3730. #define DBICODE_UNRELQ1       96                              // 0x60
  3731. #define DBICODE_UNUSEDST      97                              // 0x61
  3732. #define DBICODE_USEINSDE      98                              // 0x62
  3733. #define DBICODE_USEOFCHG      99                              // 0x63
  3734. #define DBICODE_VARMUSTF     100                              // 0x64
  3735. #define DBICODE_REGISTER     101                              // 0x65
  3736. #define DBICODE_LONGEXPR     102                              // 0x66
  3737. #define DBICODE_REFRESH      103                              // 0x67
  3738. #define DBICODE_CANCEXCEPT   104                              // 0x68
  3739. #define DBICODE_DBEXCEPT     105                              // 0x69
  3740. #define DBICODE_MEMEXCEPT    106                              // 0x6a
  3741. #define DBICODE_FATALEXCEPT  107                              // 0x6b
  3742. #define DBICODE_QRYNIY       108                              // 0x6c
  3743. #define DBICODE_BADFORMAT    109                              // 0x6d
  3744. #define DBICODE_QRYEMPTY     110                              // 0x6e
  3745. #define DBICODE_NOQRYTOPREP  111                              // 0x6f
  3746. #define DBICODE_BUFFTOOSMALL 112                              // 0x70
  3747. #define DBICODE_QRYNOTPARSE  113                              // 0x71
  3748. #define DBICODE_NOTHANDLE    114                              // 0x72
  3749. #define DBICODE_QRYSYNTERR   115                              // 0x73
  3750. #define DBICODE_QXFLDCOUNT   116                              // 0x74
  3751. #define DBICODE_QXFLDSYMNOTFOUND 117                          // 0x75
  3752. #define DBICODE_QXTBLSYMNOTFOUND 118                          // 0x76
  3753. #define DBICODE_BLOBTERM     119                              // 0x77
  3754. #define DBICODE_BLOBERR      120                              // 0x78
  3755. #define DBICODE_RESTARTQRY   121                              // 0x79
  3756. #define DBICODE_UNKNOWNANSTYPE 122                            // 0x7a
  3757.  
  3758. // Internal QBE use Only.
  3759.    #define DBICODE_SQLG_MDIST 123                           // 0x7b
  3760.    #define DBICODE_SQLG_NOARI 124                           // 0x7c
  3761.    #define DBICODE_SQLG_LIKEN 125                           // 0x7d
  3762.    #define DBICODE_SQLG_ALPHO 126                           // 0x7e
  3763.    #define DBICODE_SQLG_DATEO 127                           // 0x7f
  3764.    #define DBICODE_SQLG_RELOP 128                           // 0x80
  3765.    #define DBICODE_SQLG_ONLYC 129                           // 0x81
  3766.    #define DBICODE_SQLG_CNTLN 130                           // 0x82
  3767.    #define DBICODE_SQLG_CHINI 131                           // 0x83
  3768.    #define DBICODE_SQLG_UNION 132                           // 0x84
  3769.    #define DBICODE_SQLG_SLFIN 133                           // 0x85
  3770.    #define DBICODE_SQLG_OTJVR 134                           // 0x86
  3771.    #define DBICODE_SQLG_STROW 135                           // 0x87
  3772.    #define DBICODE_SQLG_QUANT 136                           // 0x88
  3773.    #define DBICODE_SQLG_REGSO 137                           // 0x89
  3774.    #define DBICODE_SQLG_COUNT 138                           // 0x8a
  3775.    #define DBICODE_SQLG_AVERA 139                           // 0x8b
  3776.    #define DBICODE_SQLG_DATEA 140                           // 0x8c
  3777.    #define DBICODE_SQLG_BADPT 141                           // 0x8d
  3778.    #define DBICODE_SQLG_RELPA 142                           // 0x8e
  3779.    #define DBICODE_SQLG_PATRN 143                           // 0x8f
  3780.    #define DBICODE_SQLG_FNDSU 144                           // 0x90
  3781.    #define DBICODE_SQLG_IFDCS 145                           // 0x91
  3782.    #define DBICODE_SQLG_IDCCO 146                           // 0x92
  3783.    #define DBICODE_SQLG_ONLYI 147                           // 0x93
  3784.    #define DBICODE_SQLG_SQLDIALECT 148                      // 0x94
  3785.    #define DBICODE_SQLG_NOQUERY 149                         // 0x95
  3786. // End of Internal.
  3787.  
  3788. #define DBICODE_BLOBGROUP 150                               // 0x96
  3789. #define DBICODE_QRYNOPROP  151                              // 0x97
  3790. #define DBICODE_ANSTYPNOTSUP  152                           // 0x98
  3791. #define DBICODE_ANSALIASNOTSUP  153                         // 0x99
  3792. #define DBICODE_INSBLOBREQ      154                         // 0x9a
  3793. #define DBICODE_CHGUNIQUENDXREQ 155                         // 0x9b
  3794. #define DBICODE_DELUNIQUENDXREQ 156                         // 0x9c
  3795. #define DBICODE_SQLNOFULLUPDATE 157                         // 0x9d
  3796. #define DBICODE_CANTEXECREMOTE  158                         // 0x9e
  3797. #define DBICODE_UNEXPECTEDEOC   159                         // 0x9f
  3798. #define DBICODE_SQLPARAMNOTSET  160                         // 0xA0
  3799. #define DBICODE_QUERYTOOLONG    161                         // 0xA1
  3800.  
  3801.  
  3802. // Errors added for localsql
  3803. #define  DBICODE_NOSUCHRELORALIAS    170
  3804. #define  DBICODE_TYPEAMBIGUITY       171
  3805. #define  DBICODE_ORDERBYNOTAPROJ     172
  3806. #define  DBICODE_SQLPARSE            173
  3807. #define  DBICODE_CONSTRAINTFAILED    174
  3808. #define  DBICODE_NOTGROUPINGFIELD    175
  3809. #define  DBICODE_UDFNOTDEFINED       176
  3810. #define  DBICODE_UDFERROR            177
  3811. #define  DBICODE_SINGLEROWERROR      178
  3812. #define  DBICODE_GROUPEXPR           179
  3813. #define  DBICODE_QUERYTEXT           180
  3814. #define  DBICODE_ANSIJOINSUP         181
  3815. #define  DBICODE_DISTUNION           182
  3816. #define  DBICODE_GROUPBYREQ          183
  3817. #define  DBICODE_INSUPDAUTOIC        184
  3818. #define  DBICODE_UPDREFINTSINGLE     185
  3819.  
  3820.  
  3821.  
  3822. #define DBIERR_AMBJOASY    (ERRBASE_QUERY+DBICODE_AMBJOASY)
  3823. #define DBIERR_AMBJOSYM    (ERRBASE_QUERY+DBICODE_AMBJOSYM)
  3824. #define DBIERR_AMBOUTEX    (ERRBASE_QUERY+DBICODE_AMBOUTEX)
  3825. #define DBIERR_AMBOUTPR    (ERRBASE_QUERY+DBICODE_AMBOUTPR)
  3826. #define DBIERR_AMBSYMAS    (ERRBASE_QUERY+DBICODE_AMBSYMAS)
  3827. #define DBIERR_ASETOPER    (ERRBASE_QUERY+DBICODE_ASETOPER)
  3828. #define DBIERR_AVENUMDA    (ERRBASE_QUERY+DBICODE_AVENUMDA)
  3829. #define DBIERR_BADEXPR1    (ERRBASE_QUERY+DBICODE_BADEXPR1)
  3830. #define DBIERR_BADFLDOR    (ERRBASE_QUERY+DBICODE_BADFLDOR)
  3831. #define DBIERR_BADVNAME    (ERRBASE_QUERY+DBICODE_BADVNAME)
  3832. #define DBIERR_BITMAPER    (ERRBASE_QUERY+DBICODE_BITMAPER)
  3833. #define DBIERR_CALCBADR    (ERRBASE_QUERY+DBICODE_CALCBADR)
  3834. #define DBIERR_CALCTYPE    (ERRBASE_QUERY+DBICODE_CALCTYPE)
  3835. #define DBIERR_CHGTO1TI    (ERRBASE_QUERY+DBICODE_CHGTO1TI)
  3836. #define DBIERR_CHGTOCHG    (ERRBASE_QUERY+DBICODE_CHGTOCHG)
  3837. #define DBIERR_CHGTOEXP    (ERRBASE_QUERY+DBICODE_CHGTOEXP)
  3838. #define DBIERR_CHGTOINS    (ERRBASE_QUERY+DBICODE_CHGTOINS)
  3839. #define DBIERR_CHGTONEW    (ERRBASE_QUERY+DBICODE_CHGTONEW)
  3840. #define DBIERR_CHGTOVAL    (ERRBASE_QUERY+DBICODE_CHGTOVAL)
  3841. #define DBIERR_CHKMRKFI    (ERRBASE_QUERY+DBICODE_CHKMRKFI)
  3842. #define DBIERR_CHNAMBIG    (ERRBASE_QUERY+DBICODE_CHNAMBIG)
  3843. #define DBIERR_CHUNKERR    (ERRBASE_QUERY+DBICODE_CHUNKERR)
  3844. #define DBIERR_COLUM255    (ERRBASE_QUERY+DBICODE_COLUM255)
  3845. #define DBIERR_CONAFTAS    (ERRBASE_QUERY+DBICODE_CONAFTAS)
  3846. #define DBIERR_DEL1TIME    (ERRBASE_QUERY+DBICODE_DEL1TIME)
  3847. #define DBIERR_DELAMBIG    (ERRBASE_QUERY+DBICODE_DELAMBIG)
  3848. #define DBIERR_DELFRDEL    (ERRBASE_QUERY+DBICODE_DELFRDEL)
  3849. #define DBIERR_EGFLDTYP    (ERRBASE_QUERY+DBICODE_EGFLDTYP)
  3850. #define DBIERR_EXAMINOR    (ERRBASE_QUERY+DBICODE_EXAMINOR)
  3851. #define DBIERR_EXPRTYPS    (ERRBASE_QUERY+DBICODE_EXPRTYPS)
  3852. #define DBIERR_EXTRACOM    (ERRBASE_QUERY+DBICODE_EXTRACOM)
  3853. #define DBIERR_EXTRAORO    (ERRBASE_QUERY+DBICODE_EXTRAORO)
  3854. #define DBIERR_EXTRAQRO    (ERRBASE_QUERY+DBICODE_EXTRAQRO)
  3855. #define DBIERR_FIND1ATT    (ERRBASE_QUERY+DBICODE_FIND1ATT)
  3856. #define DBIERR_FINDANST    (ERRBASE_QUERY+DBICODE_FINDANST)
  3857. #define DBIERR_GRPNOSET    (ERRBASE_QUERY+DBICODE_GRPNOSET)
  3858. #define DBIERR_GRPSTROW    (ERRBASE_QUERY+DBICODE_GRPSTROW)
  3859. #define DBIERR_IDFINLCO    (ERRBASE_QUERY+DBICODE_IDFINLCO)
  3860. #define DBIERR_IDFPERLI    (ERRBASE_QUERY+DBICODE_IDFPERLI)
  3861. #define DBIERR_INANEXPR    (ERRBASE_QUERY+DBICODE_INANEXPR)
  3862. #define DBIERR_INS1TIME    (ERRBASE_QUERY+DBICODE_INS1TIME)
  3863. #define DBIERR_INSAMBIG    (ERRBASE_QUERY+DBICODE_INSAMBIG)
  3864. #define DBIERR_INSDELCH    (ERRBASE_QUERY+DBICODE_INSDELCH)
  3865. #define DBIERR_INSEXPRR    (ERRBASE_QUERY+DBICODE_INSEXPRR)
  3866. #define DBIERR_INSTOINS    (ERRBASE_QUERY+DBICODE_INSTOINS)
  3867. #define DBIERR_ISARRAY     (ERRBASE_QUERY+DBICODE_ISARRAY)
  3868. #define DBIERR_LABELERR    (ERRBASE_QUERY+DBICODE_LABELERR)
  3869. #define DBIERR_LINKCALC    (ERRBASE_QUERY+DBICODE_LINKCALC)
  3870. #define DBIERR_LNGVNAME    (ERRBASE_QUERY+DBICODE_LNGVNAME)
  3871. #define DBIERR_LONGQURY    (ERRBASE_QUERY+DBICODE_LONGQURY)
  3872. #define DBIERR_MEMVPROC    (ERRBASE_QUERY+DBICODE_MEMVPROC)
  3873. #define DBIERR_MISNGCOM    (ERRBASE_QUERY+DBICODE_MISNGCOM)
  3874. #define DBIERR_MISNGRPA    (ERRBASE_QUERY+DBICODE_MISNGRPA)
  3875. #define DBIERR_MISSRTQU    (ERRBASE_QUERY+DBICODE_MISSRTQU)
  3876. #define DBIERR_NAMTWICE    (ERRBASE_QUERY+DBICODE_NAMTWICE)
  3877. #define DBIERR_NOCHKMAR    (ERRBASE_QUERY+DBICODE_NOCHKMAR)
  3878. #define DBIERR_NODEFOCC    (ERRBASE_QUERY+DBICODE_NODEFOCC)
  3879. #define DBIERR_NOGROUPS    (ERRBASE_QUERY+DBICODE_NOGROUPS)
  3880. #define DBIERR_NONSENSE    (ERRBASE_QUERY+DBICODE_NONSENSE)
  3881. #define DBIERR_NOPATTER    (ERRBASE_QUERY+DBICODE_NOPATTER)
  3882. #define DBIERR_NOSUCHDA    (ERRBASE_QUERY+DBICODE_NOSUCHDA)
  3883. #define DBIERR_NOVALUE     (ERRBASE_QUERY+DBICODE_NOVALUE)
  3884. #define DBIERR_ONLYCONS    (ERRBASE_QUERY+DBICODE_ONLYCONS)
  3885. #define DBIERR_ONLYSETR    (ERRBASE_QUERY+DBICODE_ONLYSETR)
  3886. #define DBIERR_OUTSENS1    (ERRBASE_QUERY+DBICODE_OUTSENS1)
  3887. #define DBIERR_OUTTWIC1    (ERRBASE_QUERY+DBICODE_OUTTWIC1)
  3888. #define DBIERR_PAROWCNT    (ERRBASE_QUERY+DBICODE_PAROWCNT)
  3889. #define DBIERR_PERSEPAR    (ERRBASE_QUERY+DBICODE_PERSEPAR)
  3890. #define DBIERR_PROCPLSW    (ERRBASE_QUERY+DBICODE_PROCPLSW)
  3891. #define DBIERR_PWINSRTS    (ERRBASE_QUERY+DBICODE_PWINSRTS)
  3892. #define DBIERR_PWMODRTS    (ERRBASE_QUERY+DBICODE_PWMODRTS)
  3893. #define DBIERR_QBEFLDFOUND (ERRBASE_QUERY+DBICODE_QBEFLDFOUND)
  3894. #define DBIERR_QBENOFENCE  (ERRBASE_QUERY+DBICODE_QBENOFENCE)
  3895. #define DBIERR_QBENOFENCET (ERRBASE_QUERY+DBICODE_QBENOFENCET)
  3896. #define DBIERR_QBENOHEADERT (ERRBASE_QUERY+DBICODE_QBENOHEADERT)
  3897. #define DBIERR_QBENOTAB    (ERRBASE_QUERY+DBICODE_QBENOTAB)
  3898. #define DBIERR_QBENUMCOLS  (ERRBASE_QUERY+DBICODE_QBENUMCOLS)
  3899. #define DBIERR_QBEOPENTAB  (ERRBASE_QUERY+DBICODE_QBEOPENTAB)
  3900. #define DBIERR_QBETWICE    (ERRBASE_QUERY+DBICODE_QBETWICE)
  3901. #define DBIERR_QRYNOANSWER (ERRBASE_QUERY+DBICODE_QRYNOANSWER)
  3902. #define DBIERR_QRYNOTPREP  (ERRBASE_QUERY+DBICODE_QRYNOTPREP)
  3903. #define DBIERR_QUAINDEL    (ERRBASE_QUERY+DBICODE_QUAINDEL)
  3904. #define DBIERR_QUAININS    (ERRBASE_QUERY+DBICODE_QUAININS)
  3905. #define DBIERR_RAGININS    (ERRBASE_QUERY+DBICODE_RAGININS)
  3906. #define DBIERR_RAGINSET    (ERRBASE_QUERY+DBICODE_RAGINSET)
  3907. #define DBIERR_ROWUSERR    (ERRBASE_QUERY+DBICODE_ROWUSERR)
  3908. #define DBIERR_SETEXPEC    (ERRBASE_QUERY+DBICODE_SETEXPEC)
  3909. #define DBIERR_SETVAMB1    (ERRBASE_QUERY+DBICODE_SETVAMB1)
  3910. #define DBIERR_SETVBAD1    (ERRBASE_QUERY+DBICODE_SETVBAD1)
  3911. #define DBIERR_SETVDEF1    (ERRBASE_QUERY+DBICODE_SETVDEF1)
  3912. #define DBIERR_SUMNUMBE    (ERRBASE_QUERY+DBICODE_SUMNUMBE)
  3913. #define DBIERR_TBLISWP3    (ERRBASE_QUERY+DBICODE_TBLISWP3)
  3914. #define DBIERR_TOKENNOT    (ERRBASE_QUERY+DBICODE_TOKENNOT)
  3915. #define DBIERR_TWOOUTR1    (ERRBASE_QUERY+DBICODE_TWOOUTR1)
  3916. #define DBIERR_TYPEMISM    (ERRBASE_QUERY+DBICODE_TYPEMISM)
  3917. #define DBIERR_UNRELQ1     (ERRBASE_QUERY+DBICODE_UNRELQ1)
  3918. #define DBIERR_UNUSEDST    (ERRBASE_QUERY+DBICODE_UNUSEDST)
  3919. #define DBIERR_USEINSDE    (ERRBASE_QUERY+DBICODE_USEINSDE)
  3920. #define DBIERR_USEOFCHG    (ERRBASE_QUERY+DBICODE_USEOFCHG)
  3921. #define DBIERR_VARMUSTF    (ERRBASE_QUERY+DBICODE_VARMUSTF)
  3922. #define DBIERR_REGISTER    (ERRBASE_QUERY+DBICODE_REGISTER)
  3923. #define DBIERR_LONGEXPR    (ERRBASE_QUERY+DBICODE_LONGEXPR)
  3924. #define DBIERR_REFRESH     (ERRBASE_QUERY+DBICODE_REFRESH)
  3925. #define DBIERR_CANCEXCEPT  (ERRBASE_QUERY+DBICODE_CANCEXCEPT)
  3926. #define DBIERR_DBEXCEPT    (ERRBASE_QUERY+DBICODE_DBEXCEPT)
  3927. #define DBIERR_MEMEXCEPT   (ERRBASE_QUERY+DBICODE_MEMEXCEPT)
  3928. #define DBIERR_FATALEXCEPT (ERRBASE_QUERY+DBICODE_FATALEXCEPT)
  3929. #define DBIERR_QRYNIY      (ERRBASE_QUERY+ DBICODE_QRYNIY)
  3930. #define DBIERR_BADFORMAT   (ERRBASE_QUERY+ DBICODE_BADFORMAT)
  3931. #define DBIERR_QRYEMPTY    (ERRBASE_QUERY+ DBICODE_QRYEMPTY)
  3932. #define DBIERR_NOQRYTOPREP (ERRBASE_QUERY+ DBICODE_NOQRYTOPREP)
  3933. #define DBIERR_BUFFTOOSMALL (ERRBASE_QUERY+ DBICODE_BUFFTOOSMALL)
  3934. #define DBIERR_QRYNOTPARSE (ERRBASE_QUERY+ DBICODE_QRYNOTPARSE)
  3935. #define DBIERR_NOTHANDLE   (ERRBASE_QUERY+ DBICODE_NOTHANDLE)
  3936. #define DBIERR_QRYSYNTERR  (ERRBASE_QUERY+ DBICODE_QRYSYNTERR)
  3937. #define DBIERR_QXFLDCOUNT  (ERRBASE_QUERY+ DBICODE_QXFLDCOUNT)
  3938. #define DBIERR_QXFLDSYMNOTFOUND (ERRBASE_QUERY+ DBICODE_QXFLDSYMNOTFOUND)
  3939. #define DBIERR_QXTBLSYMNOTFOUND (ERRBASE_QUERY+ DBICODE_QXTBLSYMNOTFOUND)
  3940. #define DBIERR_BLOBTERM    (ERRBASE_QUERY+ DBICODE_BLOBTERM)
  3941. #define DBIERR_BLOBERR     (ERRBASE_QUERY+ DBICODE_BLOBERR)
  3942. #define DBIERR_RESTARTQRY  (ERRBASE_QUERY+ DBICODE_RESTARTQRY)
  3943. #define DBIERR_UNKNOWNANSTYPE (ERRBASE_QUERY+ DBICODE_UNKNOWNANSTYPE)
  3944. #define DBIERR_SQLG_MDIST  (ERRBASE_QUERY+ DBICODE_SQLG_MDIST)
  3945. #define DBIERR_SQLG_NOARI  (ERRBASE_QUERY+ DBICODE_SQLG_NOARI)
  3946. #define DBIERR_SQLG_LIKEN  (ERRBASE_QUERY+ DBICODE_SQLG_LIKEN)
  3947. #define DBIERR_SQLG_ALPHO  (ERRBASE_QUERY+ DBICODE_SQLG_ALPHO)
  3948. #define DBIERR_SQLG_DATEO  (ERRBASE_QUERY+ DBICODE_SQLG_DATEO)
  3949. #define DBIERR_SQLG_RELOP  (ERRBASE_QUERY+ DBICODE_SQLG_RELOP)
  3950. #define DBIERR_SQLG_ONLYC  (ERRBASE_QUERY+ DBICODE_SQLG_ONLYC)
  3951. #define DBIERR_SQLG_CNTLN  (ERRBASE_QUERY+ DBICODE_SQLG_CNTLN)
  3952. #define DBIERR_SQLG_CHINI  (ERRBASE_QUERY+ DBICODE_SQLG_CHINI)
  3953. #define DBIERR_SQLG_UNION  (ERRBASE_QUERY+ DBICODE_SQLG_UNION)
  3954. #define DBIERR_SQLG_SLFIN  (ERRBASE_QUERY+ DBICODE_SQLG_SLFIN)
  3955. #define DBIERR_SQLG_OTJVR  (ERRBASE_QUERY+ DBICODE_SQLG_OTJVR)
  3956. #define DBIERR_SQLG_STROW  (ERRBASE_QUERY+ DBICODE_SQLG_STROW)
  3957. #define DBIERR_SQLG_QUANT  (ERRBASE_QUERY+ DBICODE_SQLG_QUANT)
  3958. #define DBIERR_SQLG_REGSO  (ERRBASE_QUERY+ DBICODE_SQLG_REGSO)
  3959. #define DBIERR_SQLG_COUNT  (ERRBASE_QUERY+ DBICODE_SQLG_COUNT)
  3960. #define DBIERR_SQLG_AVERA  (ERRBASE_QUERY+ DBICODE_SQLG_AVERA)
  3961. #define DBIERR_SQLG_DATEA  (ERRBASE_QUERY+ DBICODE_SQLG_DATEA)
  3962. #define DBIERR_SQLG_BADPT  (ERRBASE_QUERY+ DBICODE_SQLG_BADPT)
  3963. #define DBIERR_SQLG_RELPA  (ERRBASE_QUERY+ DBICODE_SQLG_RELPA)
  3964. #define DBIERR_SQLG_PATRN  (ERRBASE_QUERY+ DBICODE_SQLG_PATRN)
  3965. #define DBIERR_SQLG_FNDSU  (ERRBASE_QUERY+ DBICODE_SQLG_FNDSU)
  3966. #define DBIERR_SQLG_IFDCS  (ERRBASE_QUERY+ DBICODE_SQLG_IFDCS)
  3967. #define DBIERR_SQLG_IDCCO  (ERRBASE_QUERY+ DBICODE_SQLG_IDCCO)
  3968. #define DBIERR_SQLG_ONLYI  (ERRBASE_QUERY+ DBICODE_SQLG_ONLYI)
  3969. #define DBIERR_SQLG_SQLDIALECT (ERRBASE_QUERY+ DBICODE_SQLG_SQLDIALECT)
  3970. #define DBIERR_SQLG_NOQUERY (ERRBASE_QUERY+ DBICODE_SQLG_NOQUERY)
  3971. #define DBIERR_BLOBGROUP   (ERRBASE_QUERY+ DBICODE_BLOBGROUP)
  3972. #define DBIERR_QRYNOPROP   (ERRBASE_QUERY+DBICODE_QRYNOPROP)
  3973. #define DBIERR_ANSTYPNOTSUP   (ERRBASE_QUERY+DBICODE_ANSTYPNOTSUP)
  3974. #define DBIERR_ANSALIASNOTSUP (ERRBASE_QUERY+DBICODE_ANSALIASNOTSUP)
  3975. #define DBIERR_INSBLOBREQ     (ERRBASE_QUERY+DBICODE_INSBLOBREQ     )                         // 0x9a
  3976. #define DBIERR_CHGUNIQUENDXREQ (ERRBASE_QUERY+DBICODE_CHGUNIQUENDXREQ)                         // 0x9b
  3977. #define DBIERR_DELUNIQUENDXREQ (ERRBASE_QUERY+DBICODE_DELUNIQUENDXREQ)                         // 0x9c
  3978. #define DBIERR_SQLNOFULLUPDATE (ERRBASE_QUERY+DBICODE_SQLNOFULLUPDATE)                         // 0x9d
  3979. #define DBIERR_CANTEXECREMOTE  (ERRBASE_QUERY+DBICODE_CANTEXECREMOTE)                          // 0x9e
  3980. #define DBIERR_UNEXPECTEDEOC   (ERRBASE_QUERY+DBICODE_UNEXPECTEDEOC)
  3981. #define DBIERR_SQLPARAMNOTSET  (ERRBASE_QUERY+DBICODE_SQLPARAMNOTSET)
  3982. #define DBIERR_QUERYTOOLONG    (ERRBASE_QUERY+DBICODE_QUERYTOOLONG)
  3983.  
  3984. #define   DBIERR_NOSUCHRELORALIAS    (ERRBASE_QUERY+DBICODE_NOSUCHRELORALIAS)
  3985. #define  DBIERR_TYPEAMBIGUITY       (ERRBASE_QUERY+DBICODE_TYPEAMBIGUITY)
  3986. #define  DBIERR_ORDERBYNOTAPROJ    (ERRBASE_QUERY+DBICODE_ORDERBYNOTAPROJ)
  3987. #define  DBIERR_SQLPARSE          (ERRBASE_QUERY+DBICODE_SQLPARSE)
  3988. #define  DBIERR_CONSTRAINTFAILED (ERRBASE_QUERY+DBICODE_CONSTRAINTFAILED)
  3989. #define  DBIERR_NOTGROUPINGFIELD (ERRBASE_QUERY+DBICODE_NOTGROUPINGFIELD)
  3990. #define  DBIERR_UDFNOTDEFINED   (ERRBASE_QUERY+DBICODE_UDFNOTDEFINED)
  3991. #define  DBIERR_UDFERROR      (ERRBASE_QUERY+DBICODE_UDFERROR)
  3992. #define  DBIERR_SINGLEROWERROR      (ERRBASE_QUERY+DBICODE_SINGLEROWERROR)
  3993. #define  DBIERR_GROUPEXPR      (ERRBASE_QUERY+DBICODE_GROUPEXPR)
  3994. #define  DBIERR_QUERYTEXT     (ERRBASE_QUERY+DBICODE_QUERYTEXT)
  3995. #define  DBIERR_ANSIJOINSUP   ( ERRBASE_QUERY + DBICODE_ANSIJOINSUP)
  3996. #define  DBIERR_DISTUNION      ( ERRBASE_QUERY + DBICODE_DISTUNION  )
  3997. #define  DBIERR_GROUPBYREQ      ( ERRBASE_QUERY + DBICODE_GROUPBYREQ )
  3998. #define  DBIERR_INSUPDAUTOINC   ( ERRBASE_QUERY + DBICODE_INSUPDAUTOIC)
  3999. #define  DBIERR_UPDREFINTSINGLE   ( ERRBASE_QUERY + DBICODE_UPDREFINTSINGLE)
  4000.  
  4001.  
  4002. // END_OF_QUERY_MESSAGES
  4003.  
  4004. // ERRCAT_VERSION
  4005. // ===============
  4006.  
  4007. #define  ERRCODE_INTERFACEVER    1        // Interface mismatch
  4008. #define  ERRCODE_INDEXOUTOFDATE  2        // Index is out of date
  4009. #define  ERRCODE_OLDVERSION      3        // Older version (see context)
  4010. #define  ERRCODE_VALFILEINVALID  4        // Val. file is out of date
  4011. #define  ERRCODE_BLOBVERSION     5        // Old Blob file version
  4012. #define  ERRCODE_ENGQRYMISMATCH  6        // Query and IDAPI are mismatched
  4013. #define  ERRCODE_SERVERVERSION   7        // Server is incompatible version
  4014. #define  ERRCODE_TABLELEVEL      8        // Higher table level required
  4015.  
  4016. #define  DBIERR_INTERFACEVER     (ERRBASE_VERSION + ERRCODE_INTERFACEVER)
  4017. #define  DBIERR_INDEXOUTOFDATE   (ERRBASE_VERSION + ERRCODE_INDEXOUTOFDATE)
  4018. #define  DBIERR_OLDVERSION       (ERRBASE_VERSION + ERRCODE_OLDVERSION)
  4019. #define  DBIERR_VALFILEINVALID   (ERRBASE_VERSION + ERRCODE_VALFILEINVALID)
  4020. #define  DBIERR_BLOBVERSION      (ERRBASE_VERSION + ERRCODE_BLOBVERSION)
  4021. #define  DBIERR_ENGQRYMISMATCH   (ERRBASE_VERSION + ERRCODE_ENGQRYMISMATCH)
  4022. #define  DBIERR_SERVERVERSION    (ERRBASE_VERSION + ERRCODE_SERVERVERSION)
  4023. #define  DBIERR_TABLELEVEL       (ERRBASE_VERSION + ERRCODE_TABLELEVEL)
  4024.  
  4025. // ERRCAT_CAPABILITY
  4026. // =================
  4027.  
  4028. #define  ERRCODE_NOTSUPPORTED    1        // Capability not supported
  4029. #define  ERRCODE_NIY             2        // Not Implemented Yet
  4030. #define  ERRCODE_TABLESQL        3        // Cannot access SQL replica
  4031. #define  ERRCODE_SEARCHCOLREQD   4        // Searchable (Non-blob column) required
  4032. #define  ERRCODE_NOMULTCONNECT   5        // Multiple connections not supported
  4033. #define  ERRCODE_NODBASEEXPR     6        // Full dBASE Expressions not supported
  4034.  
  4035. #define  DBIERR_NOTSUPPORTED     (ERRBASE_CAPABILITY + ERRCODE_NOTSUPPORTED)
  4036. #define  DBIERR_NIY              (ERRBASE_CAPABILITY + ERRCODE_NIY)
  4037. #define  DBIERR_TABLESQL         (ERRBASE_CAPABILITY + ERRCODE_TABLESQL)
  4038. #define  DBIERR_SEARCHCOLREQD    (ERRBASE_CAPABILITY + ERRCODE_SEARCHCOLREQD)
  4039. #define  DBIERR_NOMULTCONNECT    (ERRBASE_CAPABILITY + ERRCODE_NOMULTCONNECT)
  4040. #define  DBIERR_NODBASEEXPR      (ERRBASE_CAPABILITY + ERRCODE_NODBASEEXPR)
  4041.  
  4042. // ERRCAT_CONFIG
  4043. // =============
  4044.  
  4045. #define ERRCODE_INVALIDDBSPEC    1
  4046. #define ERRCODE_UNKNOWNDBTYPE    2
  4047. #define ERRCODE_INVALIDSYSDATA   3
  4048. #define ERRCODE_UNKNOWNNETTYPE   4
  4049. #define ERRCODE_NOTONTHATNET     5
  4050. #define ERRCODE_INVALIDCFGPARAM  6        // Generic invalid config param
  4051.  
  4052.  
  4053. #define DBIERR_INVALIDDBSPEC     (ERRBASE_CONFIG + ERRCODE_INVALIDDBSPEC)
  4054. #define DBIERR_UNKNOWNDBTYPE     (ERRBASE_CONFIG + ERRCODE_UNKNOWNDBTYPE)
  4055. #define DBIERR_INVALIDSYSDATA    (ERRBASE_CONFIG + ERRCODE_INVALIDSYSDATA)
  4056. #define DBIERR_UNKNOWNNETTYPE    (ERRBASE_CONFIG + ERRCODE_UNKNOWNNETTYPE)
  4057. #define DBIERR_NOTONTHATNET      (ERRBASE_CONFIG + ERRCODE_NOTONTHATNET)
  4058. #define DBIERR_INVALIDCFGPARAM   (ERRBASE_CONFIG + ERRCODE_INVALIDCFGPARAM)
  4059.  
  4060. // ERRCAT_WARNING  non-fatal warnings:
  4061. // warn user of action, or ask for optional behavior
  4062. // ==============
  4063. #define ERRCODE_OBJIMPLICITLYDROPPED      1
  4064. #define ERRCODE_OBJMAYBETRUNCATED         2
  4065. #define ERRCODE_OBJIMPLICITLYMODIFIED     3
  4066. #define ERRCODE_VALIDATEDATA              4
  4067. #define ERRCODE_VALFIELDMODIFIED          5
  4068. #define ERRCODE_TABLELEVELCHANGED         6
  4069. #define ERRCODE_COPYLINKEDTABLES          7
  4070. #define ERRCODE_OTHERSERVERLOADED         8
  4071. #define ERRCODE_OBJIMPLICITLYTRUNCATED    9
  4072. #define ERRCODE_VCHKMAYNOTBEENFORCED      10
  4073. #define ERRCODE_MULTIPLEUNIQRECS          11
  4074. #define ERRCODE_FIELDMUSTBETRIMMED        12
  4075.  
  4076. #define DBIERR_OBJIMPLICITLYDROPPED  \
  4077.    ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYDROPPED)
  4078. #define DBIERR_OBJMAYBETRUNCATED (ERRBASE_WARNING + ERRCODE_OBJMAYBETRUNCATED)
  4079. #define DBIERR_OBJIMPLICITLYMODIFIED  \
  4080.    ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYMODIFIED)
  4081. #define DBIERR_VALIDATEDATA              \
  4082.    ( ERRBASE_WARNING + ERRCODE_VALIDATEDATA)
  4083. #define DBIERR_VALFIELDMODIFIED          \
  4084.    ( ERRBASE_WARNING + ERRCODE_VALFIELDMODIFIED)
  4085. #define DBIERR_TABLELEVELCHANGED         \
  4086.    ( ERRBASE_WARNING + ERRCODE_TABLELEVELCHANGED)
  4087. #define DBIERR_COPYLINKEDTABLES          \
  4088.    ( ERRBASE_WARNING + ERRCODE_COPYLINKEDTABLES)
  4089. #define DBIERR_OTHERSERVERLOADED          \
  4090.    ( ERRBASE_WARNING + ERRCODE_OTHERSERVERLOADED)
  4091. #define DBIERR_OBJIMPLICITLYTRUNCATED  \
  4092.    ( ERRBASE_WARNING + ERRCODE_OBJIMPLICITLYTRUNCATED)
  4093. #define DBIERR_VCHKMAYNOTBEENFORCED       \
  4094.    ( ERRBASE_WARNING + ERRCODE_VCHKMAYNOTBEENFORCED )
  4095. #define DBIERR_MULTIPLEUNIQRECS    \
  4096.    ( ERRBASE_WARNING + ERRCODE_MULTIPLEUNIQRECS )
  4097. #define DBIERR_FIELDMUSTBETRIMMED        \
  4098.    ( ERRBASE_WARNING + ERRCODE_FIELDMUSTBETRIMMED )
  4099.  
  4100.  
  4101. // ERRCAT_OTHER
  4102. // ============
  4103.  
  4104. #define  ERRCODE_FILEEXISTS      1        // File already exsits
  4105. #define  ERRCODE_BLOBMODIFIED    2        // Another user modified Blob
  4106. #define  ERRCODE_UNKNOWNSQL      3        // Unknown SQL error
  4107. #define  ERRCODE_TABLEEXISTS     4        // Table already exsits
  4108. #define  ERRCODE_PDX10TABLE      5        // Paradox 1.0 tables not supported
  4109. #define  ERRCODE_UPDATEABORT     6        // Cached Update aborted
  4110.  
  4111. #define  DBIERR_FILEEXISTS       (ERRBASE_OTHER + ERRCODE_FILEEXISTS)
  4112. #define  DBIERR_BLOBMODIFIED     (ERRBASE_OTHER + ERRCODE_BLOBMODIFIED)
  4113. #define  DBIERR_UNKNOWNSQL       (ERRBASE_OTHER + ERRCODE_UNKNOWNSQL)
  4114. #define  DBIERR_TABLEEXISTS      (ERRBASE_OTHER + ERRCODE_TABLEEXISTS)
  4115. #define  DBIERR_PDX10TABLE       (ERRBASE_OTHER + ERRCODE_PDX10TABLE)
  4116. #define  DBIERR_UPDATEABORT      (ERRBASE_OTHER + ERRCODE_UPDATEABORT)
  4117.  
  4118. //
  4119.  
  4120. // ERRCAT_COMPATIBILITY
  4121. // =====================
  4122.  
  4123. #define  ERRCODE_DIFFSORTORDER    1        // Sortorders not compatible
  4124. #define  ERRCODE_DIRINUSEBYOLDVER 2        // Directory in use by old version
  4125. #define  ERRCODE_PDX35LDDRIVER    3        // Needs Pdox 3.5 compatible language driver
  4126.  
  4127. #define  DBIERR_DIFFSORTORDER     (ERRBASE_COMPATIBILITY + ERRCODE_DIFFSORTORDER)
  4128. #define  DBIERR_DIRINUSEBYOLDVER  (ERRBASE_COMPATIBILITY + ERRCODE_DIRINUSEBYOLDVER)
  4129. #define  DBIERR_PDX35LDDRIVER     (ERRBASE_COMPATIBILITY + ERRCODE_PDX35LDDRIVER)
  4130.  
  4131. // ERRCAT_OPTPARAM
  4132. // ===============
  4133.  
  4134. #define ERRCODE_REQOPTPARAM     1       // Required optional parameter missing
  4135. #define ERRCODE_INVALIDOPTPARAM 2       // Optional param out-of-range or bad
  4136.  
  4137.  
  4138. #define DBIERR_REQOPTPARAM      (ERRBASE_OPTPARAM + ERRCODE_REQOPTPARAM)
  4139. #define DBIERR_INVALIDOPTPARAM  (ERRBASE_OPTPARAM + ERRCODE_INVALIDOPTPARAM)
  4140.  
  4141. //  ERRCAT_REPOSITORY
  4142. //  =================
  4143.  
  4144. #define  ERRCODE_REPOSITORYCORRUPT      1    // Data Repository is corrupt
  4145. #define  ERRCODE_INFOBLOBCORRUPT        2    // Info Blob corrupted
  4146. #define  ERRCODE_SCHEMACORRUPT          3    // DR Schema is corrupt
  4147. #define  ERRCODE_ATTRTYPEEXISTS         4    // Attribute Type exists
  4148. #define  ERRCODE_INVALIDOBJTYPE         5    // Invalid Object Type
  4149. #define  ERRCODE_INVALIDRELATIONTYPE    6    // Invalid Relation Type
  4150. #define  ERRCODE_VIEWEXISTS             7    // View already exists
  4151. #define  ERRCODE_NOSUCHVIEW             8    // No such View exists
  4152. #define  ERRCODE_INVALIDRECCONSTRAINT   9    // Invalid Record Constraint
  4153. #define  ERRCODE_LDBCONNECTION          10   // Object is in a Logical DB
  4154. #define  ERRCODE_REPOSITORYEXISTS       11   // Repository already exists
  4155. #define  ERRCODE_NOSUCHREPOSITORY       12   // Repository does not exist
  4156. #define  ERRCODE_REPOSITORYDBMISSING    13   // Repository database does not exist
  4157. #define  ERRCODE_REPOSITORYOUTOFDATE    14   // Repository info is out of date
  4158. #define  ERRCODE_REPOSITORYVERSION      15   // DR Version mismatch
  4159. #define  ERRCODE_REPOSITORYNAME         16   // Invalid Repository name
  4160. #define  ERRCODE_DEPENDENTOBJECTS       17   // Dependent Objects exist
  4161. #define  ERRCODE_RELATIONLIMIT          18   // Too many Relationships for this Object Type
  4162. #define  ERRCODE_RELATIONSHIPSEXIST     19   // Relationships to the Object exist
  4163. #define  ERRCODE_EXCHANGEFILECORRUPT    20   // Exchange File Corrupt
  4164. #define  ERRCODE_EXCHANGEFILEVERSION    21   // Exchange File Version Mismatch
  4165. #define  ERRCODE_TYPEMISMATCH           22   // Exchange File and Repository Types don't match
  4166. #define  ERRCODE_OBJECTEXISTS           23   // Object Exists in the Target Repository
  4167. #define  ERRCODE_REPOSITORYACCESS       24   // Access to Repository Denied
  4168. #define  ERRCODE_REPOSITORYCREATE       25   // Cannot Create Repository
  4169. #define  ERRCODE_DATABASEOPENFAILED     26   // Cannot Open a Database
  4170.  
  4171.  
  4172. #define  DBIERR_REPOSITORYCORRUPT    (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYCORRUPT)
  4173. #define  DBIERR_INFOBLOBCORRUPT      (ERRBASE_REPOSITORY + ERRCODE_INFOBLOBCORRUPT)
  4174. #define  DBIERR_SCHEMACORRUPT        (ERRBASE_REPOSITORY + ERRCODE_SCHEMACORRUPT)
  4175. #define  DBIERR_ATTRTYPEEXISTS       (ERRBASE_REPOSITORY + ERRCODE_ATTRTYPEEXISTS)
  4176. #define  DBIERR_INVALIDOBJTYPE       (ERRBASE_REPOSITORY + ERRCODE_INVALIDOBJTYPE)
  4177. #define  DBIERR_INVALIDRELATIONTYPE  (ERRBASE_REPOSITORY + ERRCODE_INVALIDRELATIONTYPE)
  4178. #define  DBIERR_VIEWEXISTS           (ERRBASE_REPOSITORY + ERRCODE_VIEWEXISTS)
  4179. #define  DBIERR_NOSUCHVIEW           (ERRBASE_REPOSITORY + ERRCODE_NOSUCHVIEW)
  4180. #define  DBIERR_INVALIDRECCONSTRAINT (ERRBASE_REPOSITORY + ERRCODE_INVALIDRECCONSTRAINT)
  4181. #define  DBIERR_LDBCONNECTION        (ERRBASE_REPOSITORY + ERRCODE_LDBCONNECTION)
  4182. #define  DBIERR_REPOSITORYEXISTS     (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYEXISTS)
  4183. #define  DBIERR_NOSUCHREPOSITORY     (ERRBASE_REPOSITORY + ERRCODE_NOSUCHREPOSITORY)
  4184. #define  DBIERR_REPOSITORYDBMISSING  (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYDBMISSING)
  4185. #define  DBIERR_REPOSITORYOUTOFDATE  (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYOUTOFDATE)
  4186. #define  DBIERR_REPOSITORYVERSION    (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYVERSION)
  4187. #define  DBIERR_REPOSITORYNAME       (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYNAME)
  4188. #define  DBIERR_DEPENDENTOBJECTS     (ERRBASE_REPOSITORY + ERRCODE_DEPENDENTOBJECTS)
  4189. #define  DBIERR_RELATIONLIMIT        (ERRBASE_REPOSITORY + ERRCODE_RELATIONLIMIT)
  4190. #define  DBIERR_RELATIONSHIPSEXIST   (ERRBASE_REPOSITORY + ERRCODE_RELATIONSHIPSEXIST)
  4191. #define  DBIERR_EXCHANGEFILECORRUPT  (ERRBASE_REPOSITORY + ERRCODE_EXCHANGEFILECORRUPT)
  4192. #define  DBIERR_EXCHANGEFILEVERSION  (ERRBASE_REPOSITORY + ERRCODE_EXCHANGEFILEVERSION)
  4193. #define  DBIERR_TYPEMISMATCH         (ERRBASE_REPOSITORY + ERRCODE_TYPEMISMATCH)
  4194. #define  DBIERR_OBJECTEXISTS         (ERRBASE_REPOSITORY + ERRCODE_OBJECTEXISTS)
  4195. #define  DBIERR_REPOSITORYACCESS     (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYACCESS)
  4196. #define  DBIERR_REPOSITORYCREATE     (ERRBASE_REPOSITORY + ERRCODE_REPOSITORYCREATE)
  4197. #define  DBIERR_DATABASEOPENFAILED   (ERRBASE_REPOSITORY + ERRCODE_DATABASEOPENFAILED)
  4198.  
  4199. #endif  // NODBIERRS
  4200.  
  4201.  
  4202.  
  4203.  
  4204. #ifndef NODBIPROTOTYPES
  4205. //============================================================================
  4206. //                          DBI prototypes
  4207. //============================================================================
  4208.  
  4209. //                          Environmental
  4210. //----------------------------------------------------------------------------
  4211.  
  4212.  
  4213. DBIResult DBIFN DbiInitFn (           // Initialize the Engine
  4214.       UINT16          iVer,             // Interface Version
  4215.       pDBIEnv         pEnv              // Environment Structure/NULL
  4216.    );
  4217.  
  4218.     // DO NOT CALL THIS DIRECTLY. Use the 'DbiInit' define below.
  4219.  
  4220.     // Initializes the engine environment. Default settings can be overwritten
  4221.     // by supplying the appropriate settings. Defaults are read from the system
  4222.     // configuration file. pEnv can be NULLP to get the system defautls.
  4223.  
  4224. #define DbiInit(pEnv)     DbiInitFn(DBIINTFVER, pEnv)
  4225.  
  4226.  
  4227. DBIResult DBIFN DbiExit(VOID);        // Exit engine
  4228.  
  4229.  
  4230. //============================================================================
  4231. //                         System Level Info
  4232. //============================================================================
  4233.  
  4234. DBIResult DBIFN DbiGetSysVersion (    // Get system version info
  4235.       pSYSVersion    psysVersion
  4236.    );
  4237.  
  4238. DBIResult DBIFN DbiGetSysConfig (     // System configuration
  4239.       pSYSConfig     psysConfig
  4240.    );
  4241.  
  4242. DBIResult DBIFN DbiGetClientInfo (    // Get Client info
  4243.       pCLIENTInfo    pclientInfo
  4244.    );
  4245.  
  4246. DBIResult DBIFN DbiGetSysInfo (       // Get system status/info
  4247.       pSYSInfo       psysInfo
  4248.    );
  4249.  
  4250. DBIResult DBIFN DbiLoadDriver (       // Load a given driver
  4251.       pCHAR          pszDriverType      // Driver name
  4252.    );
  4253.  
  4254. //============================================================================
  4255. //                            Sessions
  4256. //============================================================================
  4257.  
  4258. DBIResult DBIFN DbiStartSession (     // Start a new session
  4259.       pCHAR          pszName,           // Name (Optional)
  4260.       phDBISes       phSes  ,           // Session
  4261.       pCHAR          pNetDir            // Netfile directory for session (opt)
  4262.    );
  4263.  
  4264. DBIResult DBIFN DbiGetCurrSession (   // Get the current session
  4265.       phDBISes       phSes              // Session
  4266.    );
  4267.  
  4268. DBIResult DBIFN DbiSetCurrSession (   // Set the current session
  4269.       hDBISes        hSes               // Session/NULL
  4270.    );
  4271.  
  4272. DBIResult DBIFN DbiCloseSession (     // Close the current session
  4273.       hDBISes        hSes               // Session
  4274.    );
  4275.  
  4276. DBIResult DBIFN DbiGetSesInfo (       // Get current session info
  4277.       pSESInfo       psesInfo
  4278.    );
  4279.  
  4280. DBIResult DBIFN DbiSetPrivateDir (    // Set Private Directory for session
  4281.       pCHAR          pszDir             // Directory name/NULL
  4282.    );
  4283.  
  4284.  
  4285. //============================================================================
  4286. //                     Datababase, Schema and File inquiry
  4287. //============================================================================
  4288.  
  4289.  
  4290.  
  4291. DBIResult DBIFN DbiOpenDatabase (     // Open a database
  4292.       pCHAR          pszDbName,         // Database name
  4293.       pCHAR          pszDbType,         // Database type (NULL: Universal)
  4294.       DBIOpenMode    eOpenMode,         // Open type
  4295.       DBIShareMode   eShareMode,        // Share type
  4296.       pCHAR          pszPassword,       // Password
  4297.       UINT16         iOptFlds,          // Number of optional Params
  4298.       pFLDDesc       pOptFldDesc,       // Optional Field Descriptors
  4299.       pBYTE          pOptParams,        // Optional Params
  4300.       phDBIDb        phDb               // Returnd database handle
  4301.     );
  4302.  
  4303. DBIResult DBIFN DbiSetDirectory (     // Set the current directory
  4304.       hDBIDb         hDb,               // Universal database handle
  4305.       pCHAR          pszDir             // Directory/NULL
  4306.     );
  4307.  
  4308. DBIResult DBIFN DbiGetDirectory (     // Get the current/default directory
  4309.       hDBIDb         hDb,               // Universal database handle
  4310.       BOOL           bDefault,          // True for default
  4311.       pCHAR          pszDir             // Returned directory
  4312.     );
  4313.  
  4314. DBIResult DBIFN DbiOpenTableList (    // Open a cursor on "Tables"
  4315.       hDBIDb         hDb,               // Database handle
  4316.       BOOL           bExtended,         // True for extended info
  4317.       BOOL           bSystem,           // True to include system tables
  4318.       pCHAR          pszWild,           // Wild card name
  4319.       phDBICur       phCur              // Returned cursor
  4320.     );
  4321.  
  4322. DBIResult DBIFN DbiOpenFileList (     // Open a cursor on "Files"
  4323.       hDBIDb         hDb,               // Universal database handle
  4324.       pCHAR          pszWild,           // Wild card name
  4325.       phDBICur       phCur              // Returned cursor
  4326.     );
  4327.  
  4328. DBIResult DBIFN DbiOpenIndexList (    // Return "Indexes" for a table
  4329.       hDBIDb         hDb,               // Database handle
  4330.       pCHAR          pszTableName,      // Table name
  4331.       pCHAR          pszDriverType,     // Driver type
  4332.       phDBICur       phCur);            // Returned cursor on "Indexes"
  4333.  
  4334. DBIResult DBIFN DbiOpenFieldList (    // Return "Fields" for a table
  4335.       hDBIDb         hDb,               // Database handle
  4336.       pCHAR          pszTableName,      // Table name
  4337.       pCHAR          pszDriverType,     // Driver type
  4338.       BOOL           bPhyTypes,         // True, for physical types
  4339.       phDBICur       phCur);            // Returned cursor on "Fields"
  4340.  
  4341. DBIResult DBIFN DbiOpenVchkList (     // Return "Checks" for a table
  4342.       hDBIDb         hDb,               // Database handle
  4343.       pCHAR          pszTableName,      // Table name
  4344.       pCHAR          pszDriverType,     // Driver Type
  4345.       phDBICur       phChkCur);         // Returned cursor on "Checks"
  4346.  
  4347. DBIResult DBIFN DbiOpenRintList (     // Return Integrity checks
  4348.       hDBIDb         hDb,               // Database handle
  4349.       pCHAR          pszTableName,      // Table name
  4350.       pCHAR          pszDriverType,     // Driver type
  4351.       phDBICur       phChkCur);         // Returned cursor on "Ref Int".
  4352.  
  4353. DBIResult DBIFN DbiOpenSecurityList ( // Return security descriptions
  4354.       hDBIDb         hDb,               // Database handle
  4355.       pCHAR          pszTableName,      // Table name
  4356.       pCHAR          pszDriverType,     // Driver type
  4357.       phDBICur       phSecCur           // Returned cursor on sec list
  4358.    );
  4359.  
  4360. DBIResult DBIFN DbiOpenFamilyList (   // Return family members
  4361.       hDBIDb         hDb,               // Database handle
  4362.       pCHAR          pszTableName,      // Table name
  4363.       pCHAR          pszDriverType,     // Driver type
  4364.       phDBICur       phFmlCur           // Returned cursor on "Family"
  4365.    );
  4366.  
  4367. DBIResult DBIFN DbiOpenSPList(        // Open a cursor on "Stored Procedures"
  4368.       hDBIDb         hDb,               // Universal database handle
  4369.       BOOL           bExtended,         // True for extended info (N/A)
  4370.       BOOL           bSystem,           // True to include system procedures
  4371.       pCHAR          pszQual,           // Qualifier (N/A)
  4372.       phDBICur       phCur              // Returned cursor
  4373.    );
  4374.  
  4375. DBIResult DBIFN DbiOpenSPParamList (    // Return "Parameters" for a stored procedure
  4376.       hDBIDb         hDb,               // Database handle
  4377.       pCHAR          pszSPName,         // Stored procedure name
  4378.       BOOL           bPhyTypes,         // True, for physical types
  4379.       UINT16         uOverload,         // Overload number
  4380.       phDBICur       phCur              // Returned cursor on "Parameters"
  4381.   );
  4382.  
  4383. DBIResult DBIFN DbiOpenFunctionList (    // Open a cursor on "Functions"
  4384.       hDBIDb         hDb,               // Universal database handle
  4385.       DBIFUNCOpts    eoptBits,          // Options for function list
  4386.       phDBICur       phCur              // Returned cursor on "Functions"
  4387.                                         // Record desc is of type DBIFUNCDesc
  4388.    );
  4389.  
  4390. DBIResult DBIFN DbiOpenFunctionArgList ( // Return "Arguments" for a function
  4391.       hDBIDb         hDb,               // Database handle
  4392.       pCHAR          pszFuncName,       // Function name
  4393.       UINT16         uOverload,         // Overload number
  4394.       phDBICur       phCur              // Returned cursor on "Arguments"
  4395.   );
  4396.  
  4397. DBIResult DBIFN DbiCloseDatabase (     // Close a database
  4398.       phDBIDb        phDb                // Pointer to database handle
  4399.     );
  4400.  
  4401. //============================================================================
  4402. //                                  Capabilities
  4403. //============================================================================
  4404.  
  4405. DBIResult DBIFN DbiOpenDriverList (   // Get a list of driver names
  4406.       phDBICur       phCur              // Returned cursor
  4407.    );
  4408.  
  4409. DBIResult DBIFN DbiGetDriverDesc (    // Get description for a given type
  4410.       pCHAR          pszDriverType,     // Symbolic name for driver type
  4411.       pDRVType       pdrvType           // Driver type description
  4412.    );
  4413.  
  4414. DBIResult DBIFN DbiOpenDatabaseList ( // Get a list of registered databases
  4415.       phDBICur       phCur              // Returned cursor
  4416.    );
  4417.  
  4418. DBIResult DBIFN DbiGetDatabaseDesc (  // Get a description of a logical db
  4419.       pCHAR          pszName,           // Name of logical database
  4420.       pDBDesc        pdbDesc            // Database description
  4421.    );
  4422.  
  4423. DBIResult DBIFN DbiOpenTableTypesList ( // Get a list of table types
  4424.       pCHAR          pszDriverType,     // Driver type
  4425.       phDBICur       phCur              // Returned cursor
  4426.    );
  4427.  
  4428. DBIResult DBIFN DbiGetTableTypeDesc ( // Get Table capabilities
  4429.       pCHAR          pszDriverType,     // Driver type
  4430.       pCHAR          pszTableType,      // Table type
  4431.       pTBLType       ptblType           // Table Capabilities
  4432.    );
  4433.  
  4434.  
  4435. DBIResult DBIFN DbiOpenFieldTypesList ( // Get a list of field types
  4436.       pCHAR          pszDriverType,     // Driver type
  4437.       pCHAR          pszTblType,        // Table type (Optional)
  4438.       phDBICur       phCur              // Returned cursor
  4439.    );
  4440.  
  4441. DBIResult DBIFN DbiGetFieldTypeDesc ( // Get list of field types
  4442.       pCHAR          pszDriverType,     // Driver type
  4443.       pCHAR          pszTableType,      // Table type
  4444.       pCHAR          pszFieldType,      // Field type  (Physical only)
  4445.       pFLDType       pfldType           // Field type description
  4446.    );
  4447.  
  4448. DBIResult DBIFN DbiOpenIndexTypesList ( // Get list of index types
  4449.       pCHAR          pszDriverType,     // Driver type
  4450.       phDBICur       phCur              // Returned cursor
  4451.    );
  4452.  
  4453. DBIResult DBIFN DbiGetIndexTypeDesc ( // Get description of given idx type
  4454.       pCHAR          pszDriverType,     // Driver type
  4455.       pCHAR          pszIndexType,      // Index type
  4456.       pIDXType       pidxType           // Index description
  4457.    );
  4458.  
  4459. DBIResult DBIFN DbiOpenLdList (       // Get a list of Lang Drivers
  4460.       phDBICur       phCur              // Returned cursor
  4461.    );
  4462.  
  4463. //===========================================================================
  4464. //                      Table Open, Properties & Structure
  4465. //===========================================================================
  4466.  
  4467. DBIResult DBIFN DbiOpenTable (        // Open a table
  4468.       hDBIDb         hDb,               // Database handle
  4469.       pCHAR          pszTableName,      // Table name or file name
  4470.       pCHAR          pszDriverType,     // Driver type                 /NULL
  4471.       pCHAR          pszIndexName,      // Index to be used for access /NULL
  4472.       pCHAR          pszIndexTagName,   // Index tag name              /NULL
  4473.       UINT16         iIndexId,          // Index number                /0
  4474.       DBIOpenMode    eOpenMode,         // Read or RW
  4475.       DBIShareMode   eShareMode,        // Excl or Share
  4476.       XLTMode        exltMode,          // Xlate mode
  4477.       BOOL           bUniDirectional,   // Uni or Bi directional
  4478.       pBYTE          pOptParams,        // Optional params /NULL
  4479.       phDBICur       phCursor           // Returns Cursor handle
  4480.     );
  4481.  
  4482.  
  4483. DBIResult DBIFN DbiGetCursorProps (   // Get Cursor properties
  4484.       hDBICur        hCursor,           // Cursor handle
  4485.       pCURProps      pcurProps          // Cursor properties
  4486.     );
  4487.  
  4488. DBIResult DBIFN DbiGetObjFromName (   // Get object from name
  4489.       DBIOBJType     eObjType   ,       // Object handle
  4490.       pCHAR          pszObjName ,       // Name of object /NULL
  4491.       phDBIObj       phObj              // Returned object handle
  4492.    );
  4493.  
  4494. DBIResult DBIFN DbiGetObjFromObj (    // Get associated object
  4495.       hDBIObj        hObj       ,       // Object handle
  4496.       DBIOBJType     eObjType   ,       // Type of associated object
  4497.       phDBIObj       phObj              // Returns object of eObjType
  4498.    );
  4499.  
  4500. DBIResult DBIFN DbiGetProp (          // Get property
  4501.       hDBIObj        hObj   ,           // Object handle
  4502.       UINT32         iProp  ,           // Property to retrieve
  4503.       pVOID          pPropValue,        // == NULL, validate iProp for getting
  4504.       UINT16         iMaxLen,           // Length of buffer pPropValue
  4505.       pUINT16        piLen              // Returns required length
  4506.    );
  4507.  
  4508. DBIResult DBIFN DbiSetProp (          // Set property
  4509.       hDBIObj        hObj   ,           // Object handle
  4510.       UINT32         iProp  ,           // Property to set
  4511.       UINT32         iPropValue         // Property value
  4512.    );
  4513.  
  4514. DBIResult DBIFN DbiValidateProp (     // Validate a property
  4515.       hDBIObj        hObj,              // Object handle
  4516.       UINT32         iProp,             // property to validate
  4517.       BOOL           bSetting           // TRUE:setting, FALSE:getting
  4518.   );
  4519.  
  4520. DBIResult DBIFN DbiGetFieldDescs (    // Get field descriptions
  4521.       hDBICur        hCursor,           // Cursor handle
  4522.       pFLDDesc       pfldDesc           // Array of field descriptors
  4523.     );
  4524.  
  4525. DBIResult DBIFN DbiGetCursorForTable (// Find cursor for a given table
  4526.       hDBIDb         hDb,               // Database handle
  4527.       pCHAR          pszTableName,      // Table name
  4528.       pCHAR          pszDriverType,     // Driver type / NULL
  4529.       phDBICur       phCursor           // Returned cursor
  4530.    );
  4531.  
  4532. DBIResult DBIFN DbiCloneCursor (      // Return a duplicate cursor
  4533.       hDBICur        hCurSrc,           // Source cursor
  4534.       BOOL           bReadOnly,         // If TRUE, read only mode
  4535.       BOOL           bUniDirectional,   // If TRUE, Uni directional
  4536.       phDBICur       phCurNew           // Destination cursor address
  4537.     );
  4538.  
  4539. DBIResult DBIFN DbiCloseCursor (      // Closes cursor
  4540.       phDBICur       phCursor           // Pntr to Cursor handle
  4541.     );
  4542.  
  4543.  
  4544. //============================================================================
  4545. //                      Index Manipulation & Usage
  4546. //============================================================================
  4547.  
  4548. DBIResult DBIFN DbiOpenIndex (        // Open an index
  4549.       hDBICur        hCursor,           // Cursor handle
  4550.       pCHAR          pszIndexName,      // Index Name
  4551.       UINT16         iIndexId           // Index number (if applicable)
  4552.    );
  4553.  
  4554. DBIResult DBIFN DbiCloseIndex (       // Close an index
  4555.       hDBICur        hCursor,           // Cursor handle
  4556.       pCHAR          pszIndexName,      // Index Name
  4557.       UINT16         iIndexId           // Index number
  4558.    );
  4559.  
  4560. DBIResult DBIFN DbiSwitchToIndex (    // Change index order of access
  4561.       phDBICur       phCursor,          // Cursor handle (In/Out)
  4562.       pCHAR          pszIndexName,      // Index name
  4563.       pCHAR          pszTagName,        // Tag name (if applicable)
  4564.       UINT16         iIndexId,          // Index number
  4565.       BOOL           bCurrRec           // Position at current rec
  4566.     );
  4567.  
  4568. DBIResult DBIFN DbiGetIndexDesc (     // Get index properties
  4569.       hDBICur        hCursor,           // Cursor handle
  4570.       UINT16         iIndexSeqNo,       // Index number
  4571.       pIDXDesc       pidxDesc           // Returned index description
  4572.    );
  4573.  
  4574. DBIResult DBIFN DbiGetIndexDescs (    // Get index properties
  4575.       hDBICur        hCursor,           // Cursor handle
  4576.       pIDXDesc       pidxDesc           // Returned index descriptors
  4577.    );
  4578.  
  4579. DBIResult DBIFN DbiGetIndexForField ( // Get index desc for given field
  4580.       hDBICur        hCursor,           // Cursor handle
  4581.       UINT16         iFld,              // Field Number (1..N)
  4582.       BOOL           bProdTagOnly,      // If TRUE, only xBASE prod tags will be returned
  4583.       pIDXDesc       pidxDesc           // (Optional)
  4584.    );
  4585.  
  4586. DBIResult DBIFN DbiGetIndexSeqNo(     // Get index sequence number
  4587.       hDBICur        hCursor,           // Cursor handle
  4588.       pCHAR          pszIndexName,      // Index name
  4589.       pCHAR          pszTagName,        // Tag name (if applicable)
  4590.       UINT16         iIndexId,          // Index number
  4591.       pUINT16        piIndexSeqNo       // Index number
  4592.    );
  4593.  
  4594. DBIResult DBIFN DbiSetToKey  (        // Set key condition
  4595.       hDBICur           hCursor,        // Cursor handle
  4596.       DBISearchCond     eSearchCond,    // Search condition (default is =)
  4597.       BOOL              bDirectKey,     // Key is supplied directly
  4598.       UINT16            iFields,        // No of full fields to match
  4599.       UINT16            iLen,           // Partial key len of last field
  4600.       pBYTE             pBuff           // Either Record buffer or Key itself
  4601.     );
  4602.  
  4603. DBIResult DBIFN DbiExtractKey (       // Get the key value of current record
  4604.       hDBICur           hCursor,        // Cursor handle
  4605.       pBYTE             pRecBuf,        // Record buffer (optional)
  4606.       pBYTE             pKeyBuf         // Returned. Key bytes.
  4607.    );
  4608.  
  4609. DBIResult DBIFN DbiSetRange (         // Set cursor to a range
  4610.       hDBICur           hCursor,        // Cursor
  4611.       BOOL              bKeyItself,     // Whether Key or Record buffer
  4612.       UINT16            iFields1,       // Key fields to be mathced in full
  4613.       UINT16            iLen1,          // Key length to compare
  4614.       pBYTE             pKey1,          // Top/Left key in Range
  4615.       BOOL              bKey1Incl,      // If Inclusive of Key1
  4616.       UINT16            iFields2,       // Key fields to be mathced in full
  4617.       UINT16            iLen2,          // Key length to compare
  4618.       pBYTE             pKey2,          // Bottom/Right key in Range
  4619.       BOOL              bKey2Incl       // If Inclusive of Key2
  4620.    );
  4621.  
  4622. DBIResult DBIFN DbiResetRange (       // Reset range
  4623.       hDBICur        hCursor            // cursor handle
  4624.    );
  4625.  
  4626. DBIResult DBIFN DbiCompareKeys (      // Compare two keys
  4627.       hDBICur           hCursor,        // Cursor handle
  4628.       pBYTE             pKey1,          // Key buffer 1 to compare
  4629.       pBYTE             pKey2,          // Key buffer 2 (Or NULL)
  4630.       UINT16            iFields,        // Fields to compare in full
  4631.       UINT16            iLen,           // Partial key to compare
  4632.       pINT16            piResult        // Compare result
  4633.    );
  4634.  
  4635. DBIResult DBIFN DbiGetRecordForKey (  // Find a record matching key
  4636.       hDBICur           hCursor,        // Cursor handle
  4637.       BOOL              bDirectKey,     // Key is supplied directly
  4638.       UINT16            iFields,        // No of full fields to match
  4639.       UINT16            iLen,           // Partial key len of last field
  4640.       pBYTE             pKey,           // Either Record buffer or Key itself
  4641.       pBYTE             pRecBuff        // (Optional) Record buffer
  4642.    );
  4643.  
  4644. //=============================================================================
  4645. //                          Validity check and referential integrity
  4646. //=============================================================================
  4647.  
  4648. DBIResult DBIFN DbiGetVchkDesc (      // Get valcheck descriptor
  4649.       hDBICur        hCursor,           // Cursor handle
  4650.       UINT16         iValSeqNo,         // Valcheck sequence number
  4651.       pVCHKDesc      pvalDesc           // Returned valcheck description
  4652.    );
  4653.  
  4654. DBIResult DBIFN DbiGetRintDesc (      // Get referential integrity descriptor
  4655.       hDBICur        hCursor,           // Cursor handle
  4656.       UINT16         iRintSeqNo,        // Rint sequence number
  4657.       pRINTDesc      printDesc          // Returned rint description
  4658.    );
  4659.  
  4660. //=============================================================================
  4661. //                              Cursor Maintenance
  4662. //=============================================================================
  4663.  
  4664.  
  4665. DBIResult DBIFN DbiSetToBegin (       // Reset cursor to beginning
  4666.       hDBICur        hCursor            // Cursor handle
  4667.    );
  4668.  
  4669. DBIResult DBIFN DbiSetToEnd (         // Reset cursor to ending
  4670.       hDBICur        hCursor            // Cursor handle
  4671.     );
  4672.  
  4673. DBIResult DBIFN DbiSetToCursor (      // Set cursor to another cursor position
  4674.       hDBICur        hDest,             // Destination cursor
  4675.       hDBICur        hSrc               // Source cursor
  4676.    );
  4677.  
  4678. DBIResult DBIFN DbiGetBookMark (      // Get a book-mark
  4679.       hDBICur        hCur,              // Cursor
  4680.       pBYTE          pBookMark          // Pointer to Book-Mark
  4681.    );
  4682.  
  4683. DBIResult DBIFN DbiSetToBookMark (    // Position to a Book-Mark
  4684.       hDBICur        hCur,              // Cursor
  4685.       pBYTE          pBookMark          // Pointer to Book-Mark
  4686.    );
  4687.  
  4688. DBIResult DBIFN DbiCompareBookMarks ( // Compare two Book-marks
  4689.       hDBICur        hCur,              // Cursor
  4690.       pBYTE          pBookMark1,        // Book mark 1
  4691.       pBYTE          pBookMark2,        // Book mark 2
  4692.       pCMPBkMkRslt   pCmpBkmkResult     // Compare result
  4693.    );
  4694.  
  4695. //============================================================================
  4696. //                      Data Access: Logical Record Level
  4697. //============================================================================
  4698.  
  4699.  
  4700. DBIResult DBIFN DbiGetNextRecord (    // Find/Get the next record
  4701.       hDBICur           hCursor,        // Cursor handle
  4702.       DBILockType       eLock,          // Optional lock request
  4703.       pBYTE             pRecBuff,       // Record buffer(client)
  4704.       pRECProps         precProps       // Optional record properties
  4705.     );
  4706.  
  4707. DBIResult DBIFN DbiGetPriorRecord (   // Find/Get the prior record
  4708.       hDBICur           hCursor,        // Cursor handle
  4709.       DBILockType       eLock,          // Optional lock request
  4710.       pBYTE             pRecBuff,       // Record buffer (client)
  4711.       pRECProps         precProps       // Optional record properties
  4712.     );
  4713.  
  4714. DBIResult DBIFN DbiGetRecord (        // Gets the current record
  4715.       hDBICur           hCursor,        // Cursor handle
  4716.       DBILockType       eLock,          // Optional lock request
  4717.       pBYTE             pRecBuff,       // Record buffer(client)
  4718.       pRECProps         precProps       // Optional record properties
  4719.     );
  4720.  
  4721. DBIResult DBIFN DbiGetRelativeRecord (// Find/Get a record by record number
  4722.       hDBICur           hCursor,        // Cursor handle
  4723.       INT32             iPosOffset,     // offset from current position
  4724.       DBILockType       eLock,          // Optional lock request
  4725.       pBYTE             pRecBuff,       // Record buffer(client)
  4726.       pRECProps         precProps       // Optional record properties
  4727.     );
  4728.  
  4729. DBIResult DBIFN DbiInitRecord (       // Initialize record area
  4730.       hDBICur        hCursor,           // Cursor handle
  4731.       pBYTE          pRecBuff           // Record buffer
  4732.     );
  4733.  
  4734. DBIResult DBIFN DbiInsertRecord (     // Inserts a new record
  4735.       hDBICur        hCursor,           // Cursor handle
  4736.       DBILockType    eLock,             // Optional lock on this rec
  4737.       pBYTE          pRecBuff           // New Record (client)
  4738.     );
  4739.  
  4740. DBIResult DBIFN DbiModifyRecord (     // Updates the current record
  4741.       hDBICur        hCursor,           // Cursor handle
  4742.       pBYTE          pRecBuf,           // Modified record
  4743.       BOOL           bFreeLock          // Free record lock
  4744.     );
  4745.  
  4746. DBIResult DBIFN DbiDeleteRecord (     // Deletes the current record
  4747.       hDBICur        hCursor,           // Cursor handle
  4748.       pBYTE          pRecBuf            // Copy of deleted record
  4749.     );
  4750.  
  4751. DBIResult DBIFN DbiReadBlock (        // Read a block of records
  4752.       hDBICur        hCursor,           // Cursor handle
  4753.       pUINT32        piRecords,         // Number of records to read
  4754.       pBYTE          pBuf               // Buffer
  4755.    );
  4756.  
  4757. DBIResult DBIFN DbiWriteBlock (       // Write a block of records
  4758.       hDBICur        hCursor,           // Cursor handle
  4759.       pUINT32        piRecords,         // Number of records to write/written
  4760.       pBYTE          pBuf               // Buffer
  4761.    );
  4762.  
  4763. DBIResult DBIFN DbiAppendRecord (     // Inserts a new record
  4764.       hDBICur        hCursor,           // Cursor handle
  4765.       pBYTE          pRecBuff           // New Record (client)
  4766.     );
  4767.  
  4768. DBIResult DBIFN DbiUndeleteRecord (   // Undeletes the current record
  4769.       hDBICur        hCursor            // Cursor handle
  4770.     );
  4771.  
  4772. DBIResult DBIFN DbiGetSeqNo (         // Get logical record number
  4773.       hDBICur        hCursor,           // Cursor handle
  4774.       pUINT32        piSeqNo            // Pointer to sequence number
  4775.    );
  4776.  
  4777. DBIResult DBIFN DbiSetToSeqNo (       // Position to a logical record number
  4778.       hDBICur        hCursor,           // Cursor handle
  4779.       UINT32         iSeqNo             // Sequence number
  4780.    );
  4781.  
  4782. DBIResult DBIFN DbiGetRecordCount (   // Get the current number of records
  4783.       hDBICur        hCursor,           // Cursor handle
  4784.       pUINT32        piRecCount         // Number of records
  4785.    );
  4786.  
  4787.  
  4788. DBIResult DBIFN DbiSetToRecordNo (    // Position to Physical Rec#
  4789.       hDBICur        hCursor,           // Cursor handle
  4790.       UINT32         iRecNo             // Physical record number
  4791.    );
  4792.  
  4793. DBIResult DBIFN DbiSaveChanges (      // Flush all buffered changes
  4794.       hDBICur        hCursor            // Cursor handle
  4795.    );
  4796. DBIResult DBIFN DbiForceReread (      // Force Reread of buffers from Disk
  4797.       hDBICur        hCursor            // Cursor
  4798.    );
  4799.  
  4800. DBIResult DBIFN DbiCheckRefresh (VOID); // Check refresh for session
  4801.  
  4802. DBIResult DBIFN DbiMakePermanent (    // Make temporary table permanent
  4803.       hDBICur     hCursor,              // Cursor handle
  4804.       pCHAR       pszName,              // Rename temporary table
  4805.       BOOL        bOverWrite            // Overwrite existing file
  4806.    );
  4807.  
  4808. DBIResult DBIFN DbiForceRecordReread (// Force Reread of current record from Server
  4809.       hDBICur     hCursor,              // Cursor handle
  4810.       pBYTE       pRecBuff              // Returned : record buffer
  4811.    );
  4812.  
  4813.  
  4814. //============================================================================
  4815. //                            Field Level Access
  4816. //============================================================================
  4817.  
  4818. DBIResult DBIFN DbiGetField(          // Get Field value
  4819.       hDBICur        hCursor,           // Cursor
  4820.       UINT16         iField,            // Field # (1..n)
  4821.       pBYTE          pRecBuff,          // Record buffer
  4822.       pBYTE          pDest,             // Destination field buffer
  4823.       pBOOL          pbBlank            // Returned : is field blank
  4824.    );
  4825.  
  4826. DBIResult DBIFN DbiPutField(          // Put a value in the record buffer
  4827.       hDBICur        hCursor,           // Cursor
  4828.       UINT16         iField,            // Field # (1..n)
  4829.       pBYTE          pRecBuff,          // Record buffer
  4830.       pBYTE          pSrc               // Source field buffer
  4831.    );
  4832.  
  4833. DBIResult DBIFN DbiVerifyField(       // Verifies the field value
  4834.       hDBICur        hCursor,           // Cursor
  4835.       UINT16         iField,            // Field # (1..n)
  4836.       pBYTE          pSrc,              // Field Value
  4837.       pBOOL          pbBlank            // Field is Blank (Returned)
  4838.    );
  4839.  
  4840. DBIResult DBIFN DbiOpenBlob (         // Open a blob for access
  4841.       hDBICur        hCursor,           // Cursor handle
  4842.       pBYTE          pRecBuf,           // Record Buffer
  4843.       UINT16         iField,            // Field number (1..n)
  4844.       DBIOpenMode    eOpenMode          // Open for Read or RW
  4845.     );
  4846.  
  4847. DBIResult DBIFN DbiGetBlobSize (      // Gets the size of a blob
  4848.       hDBICur        hCursor,           // Cursor handle
  4849.       pBYTE          pRecBuf,           // Record Buffer
  4850.       UINT16         iField,            // Field number of blob (1..n)
  4851.       pUINT32        piSize             // Blob size in bytes
  4852.     );
  4853.  
  4854. DBIResult DBIFN DbiGetBlob (          // Read bytes from blob
  4855.       hDBICur        hCursor,           // Cursor handle
  4856.       pBYTE          pRecBuf,           // Record Buffer
  4857.       UINT16         iField,            // Field number of blob (1..n)
  4858.       UINT32         iOffSet,           // Starting position
  4859.       UINT32         iLen,              // No of bytes to be read
  4860.       pBYTE          pDest,             // Destination
  4861.       pUINT32        piRead             // Actual no of bytes read
  4862.     );
  4863.  
  4864. DBIResult DBIFN DbiPutBlob (          // Write bytes to blob
  4865.       hDBICur        hCursor,           // Cursor handle
  4866.       pBYTE          pRecBuf,           // Record Buffer
  4867.       UINT16         iField,            // Field number of blob (1..n)
  4868.       UINT32         iOffSet,           // Starting position
  4869.       UINT32         iLen,              // No of bytes to put
  4870.       pBYTE          pSrc               // pntr to Source
  4871.     );
  4872.  
  4873. DBIResult DBIFN DbiTruncateBlob (     // Reduces the blob size
  4874.       hDBICur        hCursor,           // Cursor handle
  4875.       pBYTE          pRecBuf,           // Record Buffer
  4876.       UINT16         iField,            // Field number of blob (1..n)
  4877.       UINT32         iLen               // New blob length
  4878.     );
  4879.  
  4880. DBIResult DBIFN DbiFreeBlob (         // Closes the blob
  4881.       hDBICur           hCursor,        // Cursor handle
  4882.       pBYTE             pRecBuf,        // Record Buffer
  4883.       UINT16            iField          // Field number of blob (0..n)
  4884.     );
  4885.  
  4886. DBIResult DBIFN DbiGetBlobHeading (   // Get Blob Heading
  4887.       hDBICur           hCursor,        // Cursor handle
  4888.       UINT16            iField,         // Field number of blob (1..n)
  4889.       pBYTE             pRecBuf,        // Record buffer of owner record
  4890.       pBYTE             pDest           // Destination buffer
  4891.    );
  4892.  
  4893. DBIResult DBIFN DbiSetFieldMap(       // Set a fieldmap
  4894.       hDBICur        hCur,              // Cursor handle
  4895.       UINT16         iFields,           // Number of fields
  4896.       pFLDDesc       pFldDesc           // Array of field descriptions
  4897.    );
  4898.  
  4899.  
  4900. //=============================================================================
  4901. //                                TRANSACTIONS
  4902. //=============================================================================
  4903.  
  4904. DBIResult DBIFN DbiBeginTran (        // Begin a transaction
  4905.    hDBIDb         hDb,                  // Database handle
  4906.    eXILType       eXIL,                 // Transaction isolation level
  4907.    phDBIXact      phXact                // Returned Xact handle
  4908. );
  4909.  
  4910. DBIResult DBIFN DbiEndTran (          // End a transaction
  4911.    hDBIDb         hDb,                  // Database handle
  4912.    hDBIXact       hXact,                // Xact handle
  4913.    eXEnd          eEnd                  // Xact end type
  4914. );
  4915.  
  4916. DBIResult DBIFN DbiGetTranInfo (      // Get transaction info
  4917.    hDBIDb         hDb,                  // Database handle
  4918.    hDBIXact       hXact,                // Xact handle
  4919.    pXInfo         pxInfo                // Xact info
  4920. );
  4921.  
  4922. //=============================================================================
  4923. //                                  LOCKING
  4924. //=============================================================================
  4925.  
  4926. DBIResult DBIFN DbiAcqTableLock (     // Lock a table
  4927.       hDBICur        hCursor,           // Cursor handle
  4928.       DBILockType    eLockType          // Lock type
  4929.     );
  4930.  
  4931. DBIResult DBIFN DbiAcqPersistTableLock (// Get a persistent lock
  4932.       hDBIDb         hDb,               // Database handle
  4933.       pCHAR          pszTableName,      // Table name
  4934.       pCHAR          pszDriverType      // Driver type / NULL
  4935.    );
  4936.  
  4937. DBIResult DBIFN DbiRelPersistTableLock (// Releases a persistent lock
  4938.       hDBIDb         hDb,               // Database handle
  4939.       pCHAR          pszTableName,      // Table name
  4940.       pCHAR          pszDriverType      // Driver type / NULL
  4941.    );
  4942.  
  4943. DBIResult DBIFN DbiRelTableLock (     // Unlocks Table level locks
  4944.       hDBICur        hCursor,           // Cursor handle
  4945.       BOOL           bAll,              // True for all table level locks
  4946.       DBILockType    eLockType          // Specific lock type
  4947.     );
  4948.  
  4949. DBIResult DBIFN DbiRelRecordLock (    // Releases record level locks
  4950.       hDBICur        hCursor,           // Cursor handle
  4951.       BOOL           bAll               // True for all. Default Current.
  4952.     );
  4953.  
  4954. DBIResult DBIFN DbiIsRecordLocked (   // Check if current record is locked
  4955.       hDBICur        hCursor,           // Cursor handle
  4956.       pBOOL          pbLocked           // Rec lock status
  4957.    );
  4958.  
  4959. DBIResult DBIFN DbiIsTableLocked (    // Verify if Table is locked
  4960.       hDBICur        hCursor,           // Cursor handle
  4961.       DBILockType    epdxLock,          // Lock type to verify
  4962.       pUINT16        piLocks            // Nbr of locks of the given type
  4963.    );
  4964.  
  4965. DBIResult DBIFN DbiIsTableShared (    // Verify if this is a shared table
  4966.       hDBICur        hCursor,           // Cursor handle
  4967.       pBOOL          pbShared           // Shared status
  4968.    );
  4969.  
  4970. DBIResult DBIFN DbiOpenLockList (     // Get a list of locks
  4971.       hDBICur        hCursor,           // Cursor handle
  4972.       BOOL           bAllUsers,         // True, for all Users locks
  4973.       BOOL           bAllLockTypes,     // True, for all lock types
  4974.       phDBICur       phLocks            // Returned cursor on Lock list
  4975.    );
  4976.  
  4977. DBIResult DBIFN DbiOpenUserList (     // Get a list of users loggedin
  4978.       phDBICur       phUsers            // Returned cursor on user list
  4979.    );
  4980.  
  4981. DBIResult DBIFN DbiSetLockRetry (     // Set Lock wait time
  4982.       INT16          iWait              // Time in seconds
  4983.    );
  4984.  
  4985. //============================================================================
  4986. //                              Batch Operations
  4987. //============================================================================
  4988.  
  4989.  
  4990. DBIResult DBIFN DbiBatchMove (        // Copy records to destination table
  4991.    pBATTblDesc    pSrcTblDesc,          // Source table identification,
  4992.    hDBICur        hSrcCur,              //  OR source cursor  ( one must be NULL )
  4993.    pBATTblDesc    pDstTblDesc ,         // Destination table identification,
  4994.    hDBICur        hDstCur,              //  OR destination cursor ( one must be NULL )
  4995.    eBATMode       ebatMode,             // Batch mode
  4996.    UINT16         iFldCount,            // Size of field maps
  4997.    pUINT16        pSrcFldMap,           // Array of source field numbers
  4998.    pCHAR          pszIndexName,         // If update mode, used to match records
  4999.    pCHAR          pszIndexTagName,      // Index tag name
  5000.    UINT16         iIndexId,             // Index  id
  5001.    pCHAR          pszKeyviolName,       // Keyviol table name  (optional)
  5002.    pCHAR          pszProblemsName,      // Problems table name (optional)
  5003.    pCHAR          pszChangedName,       // Changed table name (optional)
  5004.    pUINT32        plProbRecs,           // Number records written to problem table
  5005.    pUINT32        plKeyvRecs,           // Number records written to keyv table
  5006.    pUINT32        plChangedRecs,        // Number records written to changed table
  5007.    BOOL           bAbortOnFirstProb,    // If TRUE, abort on first problem rec
  5008.    BOOL           bAbortOnFirstKeyviol, // If TRUE, abort on first keyviol rec
  5009.    pUINT32        plRecsToMove,         // Number of records to read from source
  5010.                                         // Returns number actually read
  5011.    BOOL           bTransliterate        // If TRUE, transliterate character data
  5012.                                         // in fields between src&dst char sets
  5013. );
  5014.  
  5015. DBIResult DBIFN DbiCopyTable (        // Copy one table to another
  5016.       hDBIDb         hDb,               // Database handle
  5017.       BOOL           bOverWrite,        // True, to overwrite existing file
  5018.       pCHAR          pszSrcTableName,   // Source table name
  5019.       pCHAR          pszSrcDriverType,  // Source driver type
  5020.       pCHAR          pszDestTableName   // Destination table name
  5021.    );
  5022.  
  5023. DBIResult DBIFN DbiEmptyTable (       // Deletes all records
  5024.       hDBIDb         hDb,               // Database handle
  5025.       hDBICur        hCursor,           // Cursor (OR)
  5026.       pCHAR          pszTableName,      // Table name
  5027.       pCHAR          pszDriverType      // Driver type /NULL
  5028.     );
  5029.  
  5030. DBIResult DBIFN DbiPackTable (        // Pack a table
  5031.       hDBIDb         hDb,               // Database handle
  5032.       hDBICur        hCursor,           // Cursor (OR)
  5033.       pCHAR          pszTableName,      // Table name
  5034.       pCHAR          pszDriverType,     // Driver type /NULL
  5035.       BOOL           bRegenIdxs         // Regenerate indexes
  5036.     );
  5037.  
  5038. DBIResult DBIFN DbiRegenIndex (       // Regenerate an index
  5039.       hDBIDb         hDb,               // Database handle
  5040.       hDBICur        hCursor,           // Cursor (OR)
  5041.       pCHAR          pszTableName,      // Table name
  5042.       pCHAR          pszDriverType,     // Driver type /NULL
  5043.       pCHAR          pszIndexName,      // Index name
  5044.       pCHAR          pszIndexTagName,   // Index tagname (xbase MDX)
  5045.       UINT16         iIndexId           // Index number
  5046.     );
  5047.  
  5048. DBIResult DBIFN DbiRegenIndexes (     // Regenerate all indexes
  5049.       hDBICur         hCursor           // Cursor
  5050.    );
  5051.  
  5052. DBIResult DBIFN DbiSortTable (        // Sort table
  5053.       hDBIDb         hDb,               // Database handle
  5054.       pCHAR          pszTableName,      // Table name of source
  5055.       pCHAR          pszDriverType,     // Driver type /NULL
  5056.       hDBICur        hSrcCur,           // OR cursor of table to sort
  5057.       pCHAR          pszSortedName,     // Destination table (NULL if sort to self)
  5058.       phDBICur       phSortedCur,       // If non-null, return cursor on destination
  5059.       hDBICur        hDstCur,           // OR cursor of destination
  5060.       UINT16         iSortFields,       // Number of sort fields
  5061.       pUINT16        piFieldNum,        // Array of field numbers
  5062.       pBOOL          pbCaseInsensitive, // Which fields should sort c-i (Opt)
  5063.       pSORTOrder     pSortOrder,        // Array of Sort orders (Opt)
  5064.       pfSORTCompFn   *ppfSortFn,        // Array of compare fn pntrs (Opt)
  5065.       BOOL           bRemoveDups,       // TRUE : Remove duplicates
  5066.       hDBICur        hDuplicatesCur,    // Cursor to duplicates table (Opt)
  5067.       pUINT32        plRecsSort         // In/out param. - sort this number
  5068.                                         // of records from current position, return
  5069.                                         // number actually output to dest.  (Opt)
  5070. );
  5071.  
  5072.  
  5073. //============================================================================
  5074. //                           Create & Restructure
  5075. //============================================================================
  5076.  
  5077. DBIResult DBIFN DbiCreateTable (      // Create a new table
  5078.       hDBIDb         hDb,               // Database handle
  5079.       BOOL           bOverWrite,        // True, to overwrite existing file.
  5080.       pCRTblDesc     pcrTblDsc          // Table description
  5081.    );
  5082.  
  5083. DBIResult DBIFN DbiCreateInMemTable ( // Create a temporary table (Logical)
  5084.       hDBIDb         hDb,               // Database handle
  5085.       pCHAR          pszName,           // Logical Name
  5086.       UINT16         iFields,           // No of fields
  5087.       pFLDDesc       pfldDesc,          // Array of field descriptors
  5088.       phDBICur       phCursor           // Returned cursor handle
  5089.    );
  5090.  
  5091. DBIResult DBIFN DbiCreateTempTable (  // Create temporary table (Physical)
  5092.       hDBIDb         hDb,               // Database handle
  5093.       pCRTblDesc     pcrTblDsc,         // Table description
  5094.       phDBICur       phCursor           // Returned cursor on table
  5095.    );
  5096.  
  5097. DBIResult DBIFN DbiDoRestructure (    // Restructure a table
  5098.       hDBIDb         hDb,               // Database handle
  5099.       UINT16         iTblDescCount,     // Number of table descriptors (1)
  5100.       pCRTblDesc     pTblDesc,          // Array of table descs
  5101.       pCHAR          pszSaveAs,         // Restructure to this table
  5102.       pCHAR          pszKeyviolName,    // Keyviol table name  (optional)
  5103.       pCHAR          pszProblemsName,   // Problems table name (optional)
  5104.       BOOL           bAnalyzeOnly       // Analyze restructure
  5105.    );
  5106.  
  5107. DBIResult DBIFN DbiRenameTable (      // Rename table & family
  5108.       hDBIDb         hDb,               // Database handle
  5109.       pCHAR          pszOldName,        // Old name
  5110.       pCHAR          pszDriverType,     // Driver type /NULL
  5111.       pCHAR          pszNewName         // New name
  5112.    );
  5113.  
  5114. DBIResult DBIFN DbiDeleteTable (      // Delete a table
  5115.       hDBIDb         hDb,               // Database handle
  5116.       pCHAR          pszTableName,      // Name including any path
  5117.       pCHAR          pszDriverType      // Driver type /NULL
  5118.    );
  5119.  
  5120. DBIResult DBIFN DbiAddIndex (         // Add a new index
  5121.       hDBIDb         hDb,               // Database handle
  5122.       hDBICur        hCursor,           // Cursor (OR)
  5123.       pCHAR          pszTableName,      // Table name including any path
  5124.       pCHAR          pszDriverType,     // Driver type /NULL
  5125.       pIDXDesc       pIdxDesc    ,      // Description of the index
  5126.       pCHAR          pszKeyviolName     // Keyviol table name (optional)
  5127.    );
  5128.  
  5129. DBIResult DBIFN DbiDeleteIndex (      // Delete index
  5130.       hDBIDb         hDb,               // Database handle
  5131.       hDBICur        hCursor,           // Cursor (OR)
  5132.       pCHAR          pszTableName,      // Table name
  5133.       pCHAR          pszDriverType,     // Driver type /NULL
  5134.       pCHAR          pszIndexName,      // Index name
  5135.       pCHAR          pszIndexTagName,   // Index tagname (xbase MDX)
  5136.       UINT16         iIndexId           // Index number
  5137.    );
  5138.  
  5139. //===========================================================================
  5140. //                            Error Info
  5141. //===========================================================================
  5142.  
  5143. DBIResult DBIFN DbiGetErrorEntry (    // Get error entry
  5144.       UINT16         uEntry,            // Error stack entry
  5145.       pUINT32        pulNativeError,    // Returned. Native error code, if any
  5146.       pCHAR          pszError           // Returned. Error string, if any
  5147.    );
  5148.  
  5149. DBIResult DBIFN DbiGetErrorInfo (     // Return info on last error
  5150.       BOOL           bFull,             // If Full details
  5151.       pDBIErrInfo    pErrInfo           // Error Info
  5152.    );
  5153.  
  5154. DBIResult DBIFN DbiGetErrorString (   // Get message for error code
  5155.       DBIResult      rslt,              // Engine error code
  5156.       pCHAR          pszError           // Error string for the error
  5157.    );
  5158.  
  5159. DBIResult DBIFN DbiGetErrorContext (  // Get specific Context if available
  5160.       INT16          eContext,          // Context type
  5161.       pCHAR          pszContext         // Context string (MAXMSGLEN +1)
  5162.    );
  5163.  
  5164. //============================================================================
  5165. //                              Dbi Services
  5166. //============================================================================
  5167.  
  5168. DBIResult DBIFN DbiDateEncode (       // Encode Date components into Date
  5169.       UINT16         iMon,              // Month    (1..12)
  5170.       UINT16         iDay,              // Day      (1..31)
  5171.       INT16          iYear,             // Year     (0..2**16-1)
  5172.       pDBIDATE       pdateD             // Encoded date
  5173.    );
  5174.  
  5175. DBIResult DBIFN DbiDateDecode (       // Decode Date into components
  5176.       DBIDATE        dateD,             // Encoded Date
  5177.       pUINT16        piMon,             // Month
  5178.       pUINT16        piDay,             // Day
  5179.       pINT16         piYear             // Year
  5180.    );
  5181.  
  5182. DBIResult DBIFN DbiTimeEncode (       // Encode Time components into TIME
  5183.       UINT16         iHour,             // Hours (0..23)
  5184.       UINT16         iMin,              // Minutes (0..59)
  5185.       UINT16         iMilSec,           // Milli Seconds (0..59999)
  5186.       pTIME          ptimeT             // Encoded Time
  5187.    );
  5188.  
  5189. DBIResult DBIFN DbiTimeDecode (       // Decode TIME into components
  5190.       TIME           timeT,             // Encoded Time
  5191.       pUINT16        piHour,            // Hours (0..23)
  5192.       pUINT16        piMin,             // Minutes (0..59)
  5193.       pUINT16        piMilSec           // Milli Seconds (0..59999)
  5194.    );
  5195.  
  5196. DBIResult DBIFN DbiTimeStampEncode (  // Encode Date & TIme into Date+Time
  5197.       DBIDATE        dateD,             // Encoded Date
  5198.       TIME           timeT,             // Encoded Time
  5199.       pTIMESTAMP     ptsTS              // Encoded Date+Time
  5200.    );
  5201.  
  5202. DBIResult DBIFN DbiTimeStampDecode (  // Decode Date & Time from Date+Time
  5203.       TIMESTAMP      tsTS,              // Encoded Date+Time
  5204.       pDBIDATE       pdateD,            // Encoded Date
  5205.       pTIME          ptimeT             // Encoded Time
  5206.    );
  5207.  
  5208.  
  5209. DBIResult DBIFN DbiBcdFromFloat(      // Converts FLOAT number into FMTBcd format
  5210.        pDFLOAT     piVal   ,            // Float to convert
  5211.        UINT16      iPrecision,          // Precision of BCD
  5212.        UINT16      iPlaces ,            // Number of decimals
  5213.        pFMTBcd     pBcd                 // returns Bcd number (length = iPrecision +2)
  5214.     );
  5215.  
  5216. DBIResult DBIFN DbiBcdToFloat(        // Converts FMTBcd number to FLOAT
  5217.       pFMTBcd      pBcd,                // Bcd number to convert
  5218.       pDFLOAT      piVal                // Returns converted float
  5219.    );
  5220.  
  5221. //===========================================================================
  5222. //                           CallBacks
  5223. //===========================================================================
  5224.  
  5225. DBIResult DBIFN DbiRegisterCallBack ( // Register a call back fn
  5226.       hDBICur        hCursor,           // Cursor (Optional)
  5227.       CBType         ecbType,           // Type of call back
  5228.       UINT32         iClientData,       // Pass-thru client data
  5229.       UINT16         iCbBufLen,         // Callback buffer len
  5230.       pVOID          pCbBuf,            // Pointer to callback buffer
  5231.       pfDBICallBack  pfCb               // Call back fn being registered
  5232.    );
  5233.  
  5234. DBIResult DBIFN DbiGetCallBack (      // Register a call back fn
  5235.       hDBICur        hCursor,           // Cursor (Optional)
  5236.       CBType         ecbType,           // Type of call back
  5237.       pUINT32        piClientData,      // Pass-thru client data
  5238.       pUINT16        piCbBufLen,        // Callback buffer len
  5239.       ppVOID         ppCbBuf,           // Pointer to callback buffer
  5240.       ppfDBICallBack ppfCb              // Call back fn being registered
  5241.    );
  5242.  
  5243. //============================================================================
  5244. //                          Date, time formats
  5245. //============================================================================
  5246.  
  5247.  
  5248. DBIResult DBIFN DbiGetDateFormat (    // Get current date format
  5249.       pFMTDate       pfmtDate
  5250.    );
  5251.  
  5252. DBIResult DBIFN DbiSetDateFormat (    // Set current date format
  5253.       pFMTDate       pfmtDate
  5254.    );
  5255.  
  5256. DBIResult DBIFN DbiGetTimeFormat (    // Get current time format
  5257.       pFMTTime       pfmtTime
  5258.    );
  5259.  
  5260. DBIResult DBIFN DbiSetTimeFormat (    // Set current time format
  5261.       pFMTTime       pfmtTime
  5262.    );
  5263.  
  5264. DBIResult DBIFN DbiGetNumberFormat (  // Get current number format
  5265.       pFMTNumber     pfmtNumber
  5266.    );
  5267.  
  5268. DBIResult DBIFN DbiSetNumberFormat (  // Set current number format
  5269.       pFMTNumber     pfmtNumber
  5270.    );
  5271.  
  5272. //============================================================================
  5273. //                      Conversions
  5274. //============================================================================
  5275.  
  5276. DBIResult DBIFN DbiNativeToAnsi(      // Convert from native to Ansi
  5277.       pVOID    pLdObj  ,                // Language driver
  5278.       pCHAR    pAnsiStr,                // Destination buffer (opt)
  5279.       pCHAR    pNativeStr ,             // Source buffer
  5280.       UINT32   iLen    ,                // Length of buffer (opt)
  5281.       pBOOL    pbDataLoss               // Returns TRUE if conversion will loose data (opt)
  5282.    );
  5283.  
  5284. DBIResult DBIFN DbiAnsiToNative(      // Convert from Ansi to native
  5285.       pVOID pLdObj  ,                   // Language driver
  5286.       pCHAR    pNativeStr ,             // Destination buffer (opt)
  5287.       pCHAR    pAnsiStr,                // Source buffer
  5288.       UINT32   iLen    ,                // Length of buffer (opt)
  5289.       pBOOL    pbDataLoss               // Returns TRUE if conversion will loose data (opt)
  5290.    );
  5291.  
  5292. //============================================================================
  5293. //                            Filters
  5294. //============================================================================
  5295. #if !defined(MIDL)
  5296. DBIResult DBIFN DbiAddFilter(         // Add a filter to the cursor
  5297.       hDBICur           hCursor,        // Cursor handle
  5298.       UINT32            iClientData,    // Client supplied data      (opt)
  5299.       UINT16            iPriority,      // 1..N with 1 being highest (opt)
  5300.       BOOL              bCanAbort,      // TRUE if pfFiltercan return ABORT (opt)
  5301.       pCANExpr          pcanExpr,       // Expression tree        (opt)
  5302.       pfGENFilter       pfFilter,       // ptr to filter function (opt)
  5303.       phDBIFilter       phFilter        // Returns filter handle
  5304.    );
  5305. #endif // !defined(MIDL)
  5306.  
  5307. DBIResult DBIFN DbiDropFilter(        // Drop a filter
  5308.       hDBICur           hCursor,        // Cursor handle
  5309.       hDBIFilter        hFilter         // Filter handle
  5310.    );
  5311.  
  5312. DBIResult DBIFN DbiActivateFilter(    // Activate a Filter
  5313.       hDBICur           hCursor,        // Cursor handle
  5314.       hDBIFilter        hFilter         // Filter handle
  5315.    );
  5316.  
  5317. DBIResult DBIFN DbiDeactivateFilter(  // Deactivate Filter
  5318.       hDBICur           hCursor,        // Cursor handle
  5319.       hDBIFilter        hFilter         // Filter handle
  5320.    );
  5321.  
  5322. #if !defined(MIDL)
  5323. DBIResult DBIFN  DbiGetFilterInfo(    // Get filter information
  5324.       hDBICur           hCur    ,       // Cursor handle
  5325.       hDBIFilter        hFilter ,       // Filter handle          /NULL
  5326.       UINT16            iFilterId,      // Filter id              /0
  5327.       UINT16            iFilterSeqNo,   // Filter sequence number /0
  5328.       pFILTERInfo       pFilterinfo     // Returns filter info
  5329.   );
  5330. #endif // !defined(MIDL)
  5331.  
  5332. //============================================================================
  5333. //                            Linked Cursors
  5334. //============================================================================
  5335.  
  5336. DBIResult DBIFN DbiBeginLinkMode(     // Convert cursor to a link cursor
  5337.       phDBICur          phCursor        // In/Out : returns new cursor
  5338.     );
  5339.  
  5340. DBIResult DBIFN DbiEndLinkMode (      // Convert cursor back to normal cursor
  5341.       phDBICur       phCursor           // In/Out : returns original cursor
  5342.    );
  5343.  
  5344. DBIResult DBIFN DbiLinkDetail(        // Link detail to master
  5345.       hDBICur        hMstrCursor,       // Master cursor
  5346.       hDBICur        hDetlCursor,       // Detail cursor
  5347.       UINT16         iLnkFields,        // Number of link fields
  5348.       pUINT16        piMstrFields,      // Array of fields in master
  5349.       pUINT16        piDetlFields       // Array of fields in detail
  5350.     );
  5351.  
  5352. DBIResult DBIFN DbiLinkDetailToExp(   // Link detail to a master using exp
  5353.         hDBICur         hCursorMstr,    // Master cursor
  5354.         hDBICur         hCursorDetl,    // Detail cursor
  5355.         UINT16          iKeyLen,        // Key length to match
  5356.         pCHAR           pszMstrExp      // Expression string
  5357.     );
  5358.  
  5359. DBIResult DBIFN DbiUnlinkDetail (     // Unlink detail from master
  5360.       hDBICur        hDetlCursor        // Detail cursor to unlink
  5361.     );
  5362.  
  5363. DBIResult DBIFN DbiGetLinkStatus(     // Query linkage info for table
  5364.         hDBICur         hCursor,        // Cursor handle
  5365.         phDBICur        phCursorMstr,   // Returns master cursor, if any   (opt)
  5366.         phDBICur        phCursorDet,    // Returns first detail cursor, if any (opt)
  5367.         phDBICur        phCursorSib     // Returns next sibling detail cursor, if any (opt)
  5368.     );
  5369.  
  5370.  
  5371. //===========================================================================
  5372. //                            Translation
  5373. //===========================================================================
  5374.  
  5375.  
  5376. DBIResult DBIFN DbiTranslateRecordStructure ( // Translate a record
  5377.       pCHAR          pszSrcDriverType,  // Source driver type
  5378.       UINT16         iFlds,             // Number of fields
  5379.       pFLDDesc       pfldsSrc,          // Array of source fields: logical or physical types
  5380.       pCHAR          pszDstDriverType,  // Destination driver type
  5381.       pCHAR          pszLangDriver,     // Language driver for destination
  5382.       pFLDDesc       pfldsDst     ,     // Array of dest. fields returned
  5383.       BOOL           bCreatable         // TRUE -> map to creatable fields only.
  5384.    );
  5385.  
  5386. DBIResult DBIFN DbiOpenFieldXlt (     // Open translation object
  5387.       pCHAR          pszSrcTblType,     // NULL for Logical
  5388.       pCHAR          pszSrcLangDrv,     // NULL if no tranliteration
  5389.       pFLDDesc       pfldSrc,           // source field descriptor
  5390.       pCHAR          pszDestTblType,    // NULL for Logical
  5391.       pCHAR          pszDstLangDrv,     // NULL if no tranliteration
  5392.       pFLDDesc       pfldDest,          // Source field descriptor
  5393.       pBOOL          pbDataLoss,        // Set to TRUE, for data loss
  5394.       phDBIXlt       phXlt              // Returned translate handle
  5395.    );
  5396.  
  5397. DBIResult DBIFN DbiTranslateField (   // Translate a field
  5398.       hDBIXlt        hXlt,              // Translation handle
  5399.       pBYTE          pSrc,              // Source field
  5400.       pBYTE          pDest              // Destination field
  5401.    );
  5402.  
  5403. DBIResult DBIFN DbiCloseFieldXlt (    // Close translation object
  5404.       hDBIXlt        hXlt               // Translation handle
  5405.    );
  5406.  
  5407. //=========================================================================
  5408. //    Delayed Updates
  5409. //=========================================================================
  5410.  
  5411. DBIResult DBIFN DbiBeginDelayedUpdates(  // put cursor in delayed update mode
  5412.       phDBICur         phCursor          // In/Out : returns new Cursor
  5413.     );
  5414.  
  5415. DBIResult DBIFN DbiEndDelayedUpdates(  // Convert cursor back to normal cursor
  5416.       phDBICur         phCursor        // In/Out : returns original Cursor
  5417.     );
  5418.  
  5419. typedef enum                      // Op types for Delayed Update cursor
  5420.    {
  5421.       dbiDelayedUpdCommit          = 0,  // Commit the updates
  5422.       dbiDelayedUpdCancel          = 1,  // Rollback the updates
  5423.       dbiDelayedUpdCancelCurrent   = 2,  // Cancel the Current Rec Change.
  5424.       dbiDelayedUpdPrepare         = 3   // Phase1 of two Phase commit.
  5425.    }  DBIDelayedUpdCmd;
  5426.  
  5427. DBIResult DBIFN DbiApplyDelayedUpdates ( // Perform the specified operation.
  5428.     hDBICur            hCursor,          // Delayed update cursor handle
  5429.     DBIDelayedUpdCmd   eUpdCmd           // Op Type: Commit or Rollback.
  5430.     );
  5431.  
  5432. #define DBIDELAYUPD_SHOWMODIFYBIT      (0x1)    // Show only modified records.
  5433. #define DBIDELAYUPD_SHOWINSERTBIT      (0x2)    // Show only inserted records.
  5434. #define DBIDELAYUPD_SHOWDELETEBIT      (0x4)    // Show only deleted records.
  5435. #define DBIDELAYUPD_SHOWNONMODIFYBIT   (0x8)    // Show only unmodified recs.
  5436.  
  5437. //===========================================================================
  5438. //                                 MISC.
  5439. //===========================================================================
  5440.  
  5441.  
  5442. DBIResult DBIFN DbiGetTableOpenCount (   //  Get local cursor count
  5443.       hDBIDb         hDb,                    // Database
  5444.       pCHAR          pszTableName,           // Table name
  5445.       pCHAR          pszDriverType,          // Driver type /NULL
  5446.       pUINT16        piOpenCount             // returned number of cursors
  5447. );
  5448.  
  5449. DBIResult DBIFN DbiUseIdleTime (      // Use Idle time
  5450.       VOID
  5451.    );
  5452.  
  5453. DBIResult DBIFN DbiGetLdObj (         // Get language driver
  5454.       hDBICur        hCursor,           // Cursor handle
  5455.       pVOID         *ppLdObj            // Returned language driver object
  5456.    );
  5457.  
  5458. DBIResult DBIFN DbiGetLdName (        // Get language driver name from table
  5459.       pCHAR         pszDriver,          // Driver name
  5460.       pCHAR         pObjName,           // Name of object, i.e. table name
  5461.       pCHAR         pLdName             // Returned language driver name
  5462.    );
  5463.  
  5464. DBIResult DBIFN DbiFormFullName (     // Form Full Name
  5465.       hDBIDb         hDb,               // Database handle
  5466.       pCHAR          pszTableName,      // Table name
  5467.       pCHAR          pszDriverType,     // Driver type /NULL
  5468.       pCHAR          pszFullName        // Returns full name
  5469.    );
  5470.  
  5471. DBIResult DBIFN DbiAddPassword (      // Add a password to current session
  5472.       pCHAR          pszPassword        // Password
  5473.    );
  5474.  
  5475. DBIResult DBIFN DbiDropPassword (     // Drop a password from current session
  5476.       pCHAR          pszPassword        // password/NULL
  5477.    );
  5478.  
  5479. DBIResult DBIFN DbiGetNetUserName (   // Get network username
  5480.       pCHAR          pszNetUserName     // Returns username
  5481.    );
  5482.  
  5483.  
  5484. DBIResult DBIFN DbiDebugLayerOptions (// Get SDK debug layer options
  5485.       UINT16         iOption,           // Option
  5486.       pCHAR          pDebugFile         //
  5487.    );
  5488.  
  5489. DBIResult DBIFN DbiOpenCfgInfoList (  // Open a cursor on "Config"
  5490.       hDBICfg        hCfg,              // NULL
  5491.       DBIOpenMode    eOpenMode,         // ReadWrite or readonly
  5492.       CFGMode        eConfigMode,       // Config mode
  5493.       pCHAR          pszCfgPath,        // Path
  5494.       phDBICur       phCur              // Returned cursor
  5495.   );
  5496.  
  5497. DBIResult DBIFN DbiAddAlias (         // Add a new alias
  5498.       hDBICfg        hCfg,              // NULL
  5499.       pCHAR          pszAliasName,      // Alias name
  5500.       pCHAR          pszDriverType,     // Driver type for alias
  5501.       pCHAR          pszParams,         // Optional parameters
  5502.       BOOL           bPersist           // Persistent or session relative
  5503.   );
  5504.  
  5505. DBIResult DBIFN DbiDeleteAlias (      // Add a new alias
  5506.       hDBICfg        hCfg,              // NULL
  5507.       pCHAR          pszAliasName       // Alias name
  5508.   );
  5509.  
  5510.  
  5511.  
  5512. #ifndef NODBIQBE
  5513. //===========================================================================
  5514. //                      Query Management
  5515. //===========================================================================
  5516.  
  5517. DBIResult DBIFN DbiQExecDirect (      // Execute query
  5518.       hDBIDb         hDb,               // Database handle
  5519.       DBIQryLang     eQryLang,          // Query language
  5520.       pCHAR          pszQuery,          // Query
  5521.       phDBICur       phCur              // Returned cursor on result set
  5522.    );
  5523.  
  5524. DBIResult DBIFN DbiQAlloc (         // Allocates a statement handle
  5525.       hDBIDb         hDb,               // Database handle
  5526.       DBIQryLang     eQryLang,          // Query language
  5527.       phDBIStmt      phStmt             // Returned statment handle
  5528.    );
  5529.  
  5530.  
  5531. DBIResult DBIFN DbiQPrepare (         // Prepare a query
  5532.       hDBIStmt       hStmt,             // Statment handle
  5533.       pCHAR          pszQuery           // Query
  5534.    );
  5535.  
  5536. DBIResult DBIFN DbiQPrepareExt (      // Prepare a query
  5537.       hDBIDb         hDb,               // Database handle
  5538.       DBIQryLang     eQryLang,          // Query language
  5539.       pCHAR          pszQuery,          // Query
  5540.       UINT16         propBits,          // properties for Prepare, e.g. qprepFORUPDATE
  5541.       phDBIStmt      phStmt             // Returned statment handle
  5542.    );
  5543.  
  5544. DBIResult DBIFN DbiQExec (            // Execute prepared query
  5545.       hDBIStmt       hStmt,             // Statement handle
  5546.       phDBICur       phCur              // Returned handle on result set
  5547.    );
  5548.  
  5549. DBIResult DBIFN DbiQFree (            // Free statement handle
  5550.       phDBIStmt      phStmt             // Statement handle
  5551.    );
  5552.  
  5553. DBIResult DBIFN DbiQSetParams (       // Set query options
  5554.       hDBIStmt       hStmt,             // Statement handle
  5555.       UINT16         uFldDescs,         // Number of parameter field descriptors
  5556.       pFLDDesc       paFldDescs,        // Array of parameter field descriptors
  5557.       pBYTE          pRecBuff           // Record buffer
  5558.    );
  5559.  
  5560. DBIResult DBIFN DbiQInstantiateAnswer ( // Create answer table
  5561.       hDBIStmt   hStmt,                 // Statement Handle
  5562.       hDBICur    hCur,                  // Cursor Handle
  5563.       pCHAR      pszAnswerName,         // Answer Table Name/NULL
  5564.       pCHAR      pszAnswerType,         // Answer Table Type/NULL
  5565.       BOOL       bOverWrite,            // Overwrite Flag
  5566.       phDBICur   phCur                  // cursor to instantiated table (output)(optional)
  5567.    );
  5568.  
  5569. DBIResult DBIFN DbiQExecProcDirect (    // Direct execution of stored procedure
  5570.       hDBIDb         hDb,               // Database handle
  5571.       pCHAR          pszProc,           // Stored procedure name
  5572.       UINT16         uParamDescs,       // Number of parameter descriptors
  5573.       pSPParamDesc   paParamDescs,      // Array of parameter descriptors
  5574.       pBYTE          pRecBuff,          // Record buffer
  5575.       phDBICur       phCur              // Returned handle on result set
  5576.    );
  5577.  
  5578. DBIResult DBIFN DbiQPrepareProc (       // Prepare a stored procedure
  5579.       hDBIDb         hDb,               // Database handle
  5580.       pCHAR          pszProc,           // Stored procedure name
  5581.       UINT16         uParamDescs,       // Number of parameter descriptors
  5582.       pSPParamDesc   paParamDescs,      // Array of parameter descriptors
  5583.       pBYTE          pRecBuff,          // Record buffer
  5584.       phDBIStmt      phStmt             // Returned statment handle
  5585.    );
  5586.  
  5587. DBIResult DBIFN DbiQSetProcParams (     // Set procedure params
  5588.       hDBIStmt       hStmt,             // Statement handle
  5589.       UINT16         uParamDescs,       // Number of parameter descriptors
  5590.       pSPParamDesc   paParamDescs,      // Array of parameter descriptors
  5591.       pBYTE          pRecBuff           // Record buffer
  5592.    );
  5593.  
  5594. typedef struct
  5595.    {
  5596.       DBINAME     szDatabase;
  5597.       DBITBLNAME  szTableName;
  5598.       DBINAME     szFieldName;
  5599.       BOOL        bExpression;
  5600.       BOOL        bAggregate;
  5601.       BOOL        bConstant;
  5602.    }  STMTBaseDesc;
  5603. typedef STMTBaseDesc far *pSTMTBaseDesc;
  5604.  
  5605. DBIResult DBIFN DbiQGetBaseDescs(
  5606.       hDBIStmt     hStmt,      // Statement Handle
  5607.       phDBICur     phCur       // Cursor of type StatementBaseDesc
  5608.       );
  5609.  
  5610. #endif  // NODBIQBE
  5611.  
  5612. #endif  // NODBIPROTOTYPES
  5613.  
  5614. #ifdef __cplusplus
  5615.    }
  5616. #endif // __cplusplus
  5617.  
  5618. #if ! (defined(lint) || defined(_lint))
  5619. #  if ( _MSC_VER >= 800 ) || (defined(__BORLANDC__) && defined(__FLAT__))
  5620. #    pragma warning(disable:4103)
  5621. #    if !(defined( MIDL_PASS )) || defined( __midl )
  5622. #      pragma pack(pop)
  5623. #    else
  5624. #      pragma pack()
  5625. #    endif
  5626. #  elif defined(__BORLANDC__) && !defined(__FLAT__)
  5627. #    pragma option -a.
  5628. #  else
  5629. #    pragma pack()
  5630. #  endif
  5631. #endif // ! (defined(lint) || defined(_lint))
  5632.  
  5633. #endif
  5634.  
  5635. 
  5636.